一、引言
我们知道,在Javascript中,函数内部可以访问函数外部的变量,而反之,函数外部不可以访问函数内部的变量。那么问题来了,如何才能让函数外部访问到函数内部的变量呢?
二、闭包
闭包就是有权访问一个函数内部变量的函数,也即函数里的函数。看一个例子:
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2; //当return的是内部函数时,才算得上闭包
}
var result=f1();
result(); // 999
上例中的f2函数就是闭包,通过f2函数,将f1的内部变量n得以在函数外部访问。
三、闭包的特点
1.函数内再嵌套函数;
2.内部函数可以引用外层的参数和变量;
3.参数和变量不会被垃圾回收机制回收。
四、注意事项
使用闭包需要注意:
由于闭包会使得函数中的参数和变量都被保存在内存中,内存消耗很大,使用不当很可能造成内存泄漏。