对JS闭包的一点点理解

误解: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()函数就是闭包。
闭包的本质可以理解为:能够读取其他函数内部变量的函数。
闭包是“定义在一个函数内部的函数”。
闭包起到连接函数内部与函数外部的桥梁作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值