首页 > 编程语言 > 详细

JavaScript--声明提前

时间:2016-05-22 19:47:16      阅读:192      评论:0      收藏:0      [点我收藏+]

声明提前(hoist): 在正式执行程序前,都会将所有var声明的变量和function声明的函数提前到*当前作用域*的顶部集中创建。
但是,赋值留在原地。

    console.log(a);//undefined
    var a=10;
    console.log(a);//10

同理,下面也是一个例子:

因为函数的声明提前,同时第二个fun()覆盖了第一个fun(),所以第一个fun()会弹出2,第二个同理也是弹出2,第三个console.log则会输出var定义的100,最后一个fun()

 1   fun();//2
 2   function fun(){
 3     alert(1);
 4   }
 5   fun();//2
 6   function fun(){
 7     alert(2);
 8   }
 9   var fun=100;
10   console.log(fun);//100
11   fun();//Uncaught TypeError: fun is not a function

再来一个例子:

因为函数内声明的变量a提前到函数作用域的顶端,但是值留在了原地,所以第一次console.log输出的是undefined,第二次输出100,同时函数执行完后被垃圾回收,最后一次console.log输出全部变量的值10。

1  var a=10;
2   function fun(){
3     console.log(a);//undefined
4     var a=100;
5     console.log(a);
6   }
7   fun();//100
8   console.log(a);//10

 

JavaScript--声明提前

原文:http://www.cnblogs.com/chenzeyongjsj/p/5517333.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!