什么是闭包?
能够访问其他函数内部变量的函数
为什么要有闭包?
由于变量的作用域的原因(函数内部能读取全局变量,函数外部无法读取局部变量),为了在函数外部读取局部变量,所以就有了闭包
闭包基于的原理:
函数的作用域链:父函数的变量对子函数的都是可见的
闭包的作用:
1.访问其他函数内部变量
2.保护变量不被内存回收机制回收
实现过程
function outer(){
var m = 2;
function inner(){
console.log(m)
}
return inner;
}
var n = outer();
n()//打印2
用闭包解决循环注册点击事件
for(i=0;i<divs.length;i++){
divs[i].onclick = function(j){
return function(j){
alert(j)
}
}(i)
}
注意事项
如若操作不当,可能会导致内存泄漏