首页 > 代码库 > 初识javascript 闭包和变量提升

初识javascript 闭包和变量提升

先上一小段代码:

 1  function outFun(){
 2         var num = 2;
 3         function inFun(){
 4             console.log(num);
 5         }
 6         return inFun;
 7     }
 8     var out = outFun();
 9     out();//2,这里能够访问,其实是把num这个变量往上面一层提升了一下,out()往里面执行了一层。刚刚好在同一层。
10     console.log(num);//浏览器报错,不能访问outFun函数里面的局部变量num

敲黑板,说概念,通俗的说:闭包就是有权访问另外一个函数作用域变量的函数。

再说一个变量提升的概念吧;

1 var scope="global";  
2 function scopeTest() { 
3     console.log(scope);  
4     var scope="local";  
5 }  
6 scopeTest(); //undefined

相当于下面的代码:

var scope="global";  
function scopeTest() {  
    var scope;  //但是如果没写var ,scope就是全局变量,不是局部变量了。
    console.log(scope);  
    scope="local";  
}  
scopeTest(); //undefined

原文链接:http://www.cduyzh.com/js-closure/

 

初识javascript 闭包和变量提升