1.闭包就是一个封闭的空间,存放会被使用的变量。
2.引用外部变量就会产生闭包。
3.可以自定义闭包,可以让外部环境访问到函数内部的变量,使得内部变量持续保存。解决了全局变量污染的问题。
典型例子:
for(var i = 0;i<=3;i++){
setTimeout(function(){
console.log(i);
},1000);
}//由于访问外部变量形成闭包,访问的是相同变量i,i只有一个:4444
for(var i = 0;i<=3;i++){ (function(index){
setTimeout(function(){
console.log(i);
},1000);})(i);
}//没有访问外部变量没有产生闭包:0123
for(let i = 0;i<=3;i++){
setTimeout(function(index){
console.log(i);
},1000);
}//访问的是不同的变量i:0123