一、WHAT:闭包是什么
二、WHY:为什么要使用闭包
在js中,存在全局变量和局部变量,函数内部是可以访问全局变量的,但函数外部不能读取函数内部的变量。在有些情况下,例如想反复使用,又想避免全局污染,就可以使用到闭包。
闭包有两个用途:
- 使用闭包可以访问函数中的变量
- 可以使变量长期保存在内存中,生命周期较长
三、HOW:怎么使用闭包
在一个函数内部声明一个函数,这个内部函数对外层函数的变量执行一些操作,然后返回这个内部函数。把外层函数保存在一个全局变量中。1
2
3
4
5
6
7
8
9
10
11
12function fn1(){
var a = 1;
function fn2(){
return a++;
}
return fn2;
}
var f = fn1();
f(); // 1
f(); // 2
四、注意事项
闭包不能滥用,因为闭包会使函数中的变量都被保存在内存中,内存消耗大,会影响网页的性能,在ie中可能导致内存泄露,闭包使用完了后,要立即释放资源,将引用变量指向null