有时候我们在使用for循环操作变量赋值的时候,会发现莫名其妙的值都变成了最后一个的值。这种情况就是 因为我们的变量在使用的过程中被污染了,也就是被后面的值给覆盖了。那么为了解决这种情况,我们可以使用闭包。
什么是闭包?
闭包:即重用一个变量,又保护变量不被污染的一种机制。是指有权访问另一个函数作用域中的变量的函数。
什么时候使用:只要即重用一个变量,又保护变量不被污染时。
js使用闭包的案例:
for(var i=1;i<=10;i++){
(function(num){ //自我执行,并传参(将匿名函数形成一个表达式)(传递一个参数)
return num; //这里的num写什么都可以
})(i);
}
创建闭包的常见方式,就是在一个函数内部创建另一个函数。
闭包可以用在许多地方。它的最大用处有两个:
1.可以读取函数内部的变量
2.让这些变量的值始终保存在内存中
闭包形成的原因: 外层函数调用后,外层函数的函数作用域(AO)对象无法释放,被内层函数引用着。