闭包 闭包的理解

http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

阮一峰大牛对闭包的理解文章

讲的很详细

    function f1(){
var n=999;
test=10;
nAdd=function(){
n+=1;
console.log(n)
};
function f2(){
alert(n);
}
return f2;
}
f1();
alert(test);
nAdd(); //1000
f1()(); //999

var result=f1();
console.log(result);
alert(test);
result(); // 999
nAdd(); //1000
result(); //1000


function fn(){
var a = 0;
return function(){
console.log(++a)
// return ++a;
}
}
var f=fn();
console.log(f)
f(); //1
f(); //2
f(); //3
fn()(); //1
fn()(); //1
fn()(); //1

闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。

 

posted @ 2018-05-21 16:15  _今天  阅读(196)  评论(0编辑  收藏  举报