Javascript执行顺序
1)默认情况下,浏览器是从上到下解析html,当javascript嵌入html中,也会按照这个顺序,从外面引入的js文件也不会改变这个顺序。
2)当解析到javascript则会调用js解析器,通常js解析器是先预编译,在解析执行,(解析器对函数和变量的声明进行了预编译)。
解析器先预编译变量(在内存中声明了,初始化成undefined),所以第一个num并没有报错;但是却并没有给它赋值,所以第一个才会没有显示1,变量的赋值是在解析的时候执行。
因为先对函数的声明进行了预编译,hello在声明之前调用并不会报错。
当有函数名相同时,后面的函数会覆盖前面的函数。
3)解析器是按照script片段来解析的,先预编译第一个script片段,然后执行,再然后预编译第二个script片段再执行。
注意:函数还可以这样声明
但是像这样声明不能将调用放在前面,因为这样算是变量的赋值,赋值在解析的时候进行的。
(第二个调用跟第一个相同)
4)在解析执行某个script代码片段时,如果此代码有问题,则会停止执行当前sript片段,但不会影响后面的script片段的执行。
5)因为变量变量在不同的代码片段中可以共享,因此局部变量因当放到函数中。
<script type="text/javascript">
//对函数预编译的演示
var num=1;
</script>
<script>
console.info("num="+num);
</script>
听课: 51CTO 大头娃老师