初识javascript 闭包和变量提升

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识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 闭包和变量提升的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript作用域和闭包

javascript闭包变量提升

JS---闭包

全局变量局部变量闭包详解

JS高级. 05 词法作用域变量名提升作用域链闭包

前端JavaScript基础面试题01_JS基础知识(中)作用域闭包