我也从事前端这个行业1年了,最开始理解闭包是很多人的难点 虽然我的理解并不是很专业 但是可以作为一个理解的方法
首先 闭包是为了保护局部变量,避免污染全局。
要判断是否有闭包:
1)一定有嵌套函数
2)内层函数操作了外层函数里的变量
3)外层函数把内层函数返回到了外部,被群居变量保存住了
(外层函数被调用了几次,就有几个受保护的局部变量的副本,反复调用来自一个闭包的函数几次,受保护的局部变量就变化几次),如下:
function a(){
var n=10;
function c(){
return n++;
}
return c;
}
a()(); //返回值是10 这里局部变量无法污染到全局,全局不会因为局部的改变而改变