1. 什么是闭包
闭包是指能够访问其他函数内部变量的函数。
2. 闭包经典写法
function fn() {
var a = 10;
return function(b) {
console.log(a+b);
}
}
var getVal = fn();
getVal(5);
//15
//定时器与闭包
for(var i=0; i<5; i++) {
setTimeout(function(){
console.log(i);
},1000);
}
//5 5 5 5 5
3.闭包的作用
- 能够在离开函数之后继续访问该函数的变量,变量一直保存在内存中。
- 闭包中的变量是私有的,只有闭包函数才有权限访问它。不会被外面的变量和方法给污染。
4. 闭包的缺点
- 会造成内存泄漏,影响性能
5. 如何解决闭包
将内部函数设置为立即执行函数。
使用完变量后手动为它赋值为null;
6.闭包的应用
- 设计模式中的单例模式
- for循环中的保留i的操作
- 防抖和节流