JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且在分析执行同一段代码中,定义式的函数语句会被提取出来优先执行。函数定义执行完后,才会按顺序执行其他代码。
先看看两个例子:
例子1:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var hello = function(){ alert('hello,zhangsan'); } hello();//第一次调用,输出“hello,zhangsan” var hello = function(){ alert('hello,lisi'); } hello();//第二次调用,输出“hello,lisi”
例子2:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function hello(){ alert(‘hello,zhangsan’); } hello();//第一次调用,猜猜输出什么内容? function hello(){ alert(‘hello,lisi’); } hello();//第二次调用,猜猜输出什么内容?
在例子2中,两次调用都会输出相同的内容“hello,lisi”。同样是声明两个相同名称的函数,为什么调用的结果却不一样呢?
这 就是JavaScript执行顺序导致的。JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且在分析执行同一段 代码中,定义式的函数语句会被提取出来优先执行。函数定义执行完后,才会按顺序执行其他代码。也就是说,在第一次调用hello函数之前,第一个函数语句 定义的代码已经被第二个函数定义语句的代码覆盖了,这就是为什么在例子2中第一次调用hallo时,也会输出后面定义的函数内容的原因了。
再例如:
复制代码
1
2
3
4
5
6
7var t = 1; function con(){ console.log(t); var t = 2; console.log(t); } con();
输出结果为:undefined和2
由此可见,执行函数过程中,先初始化t变量,并未赋值,此时为undefined,直至var t = 2时才赋值为2,所以第二个输出是2
本文转自https://www.cnblogs.com/wshiqtb/archive/2013/12/18/3480590.html
最后
以上就是娇气便当最近收集整理的关于JS代码执行顺序的全部内容,更多相关JS代码执行顺序内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复