在head标签里面javascript预装载,而在body里面则直接执行,怎么理解?

看到好多人都说在head标签里面javascript预装载,而在body里面则直接执行,这个怎么理解?
<scritp>
alert('11');
</script>
上面代码放在head和body不都执行了吗?
如果是:
<script>
function aa(){
alert('11');
}
</script>
再比如上面的不论在head和body不都要调用后才执行吗?
感觉除了加载顺序和head里面的js代码会在body之前加载,没什么区别。
怎么体现:
head标签里面javascript预装载,而在body里面则直接执行这句话?
那位能解惑?

这是一个概念定义上的问题,
尽量把需要被调用的JS放在head里,这样无论网页中什么地方需要调用此函数,都可以被正常的使用到。
body中的JS一般是 当网页被加载的时候,需要被一并执行的。通常是输出一些HTML代码,生成页面的内容。追问

你这个是不是网上摘抄的?

追答

。。。是不是网上摘抄的不重要【我说是或不是,你不一定相信,对吧】,重要的是让你了解。

追问

你的意思是说:head标签里面javascript预装载这个只是一个概念定义上的问题,其实并不存在什么预装载,只不过head里面的js会全部加载以便其它地方调用,防止其它地方调用是找不到对象是吗?
无论在head和body中都是执行代码对吗?

追答

预装载 是因为先加载,html是从上往下加载的。
其实放哪都一样,只要你代码执行不出错就行

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-17
和程序的逻辑顺序有关

如果你要在head中为某个变量赋值为页面某个节点的内容,程序会直接出错,因为页面内容还没有加载,找不到对应的节点,在body中则没有问题

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
console.log(document.getElementById('div').innerHTML);
</script>
</head>
<body>
<div id="div">test</div>
</body>
</html>

结果:Uncaught TypeError: Cannot read property 'innerHTML' of null

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">test</div>
<script type="text/javascript">
console.log(document.getElementById('div').innerHTML);
</script>
</body>
</html>

结果:test
第2个回答  2012-08-16
这个说法并不是JS或浏览器的执行规则,只能说是一种编程习惯.浏览器或JS引擎只会顺序执行(带defer属性的script标签除外),这句话可以换个方式理解:
如果希望先加载一些脚本片段,可以把它放到head段,对于需要立即执行的脚本,在body中直接调用.
第3个回答  2012-08-16
javascript放在head标签里面,加载到用户端的时候会先对javascript代码进行编译,编译的这段时间浏览器不会显示htmly元素,就是说这段时间看不到网页有一段等待的时间。而放在body里面浏览器会在显示html元素的同时编译javascript所以用户不会觉得等待时间过长。
相似回答