您的位置:首页 > Web前端 > JavaScript

对JS闭包的一点点理解

2017-02-21 10:13 169 查看
误解:JS闭包的本质是在函数内部访问函数外部的变量。(×)

例1:

var n=1;

function test(){

alert(n);

}

test(); //1

上述例子并不属于JS闭包,以上属于JS的特性:在函数内部可以直接读取全局变量。但是!!!在函数外部无法访问到函数内部定义的局部变量。

例2:

function test(){

var n=1;

}

alert(n); //ReferenceError: n is not defined

为了访问到函数1内部的局部变量,可以在函数1内部再定义一个函数2,通过函数2访问函数1内部的变量,最后返回。

例3:

function test(){

var n=1;

function closure(){

alert(n);

}

return closure;

}

var t=test();

t(); //1

例3中通过closure()函数访问test()函数内部的局部变量,此处的closure()函数就是闭包。

闭包的本质可以理解为:能够读取其他函数内部变量的函数。

闭包是“定义在一个函数内部的函数”。

闭包起到连接函数内部与函数外部的桥梁作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JS闭包