闭包
// 函数a
function a(){
var i = 0;
// 函数b
function b(){
alert( i++ );
}
return b;
}
//函数c
var
c = a();
c();
代码中函数a的内部函数b,被函数a外面的一个变量c引用的时候,就创造了一个闭包
闭包的优点:
方便调用上下文的局部变量,加强封装性,保护变量
闭包的缺点:
常驻内存,使用不当会导致内存泄漏。
由上面的例子可以看出,闭包之所以占用资源是因为当函数a执行结束后,变量i并没有因为函数a的结束而得到释放,因为c的执行需要依赖i。