闭包
- 函数执行时创建了一个内部函数,这个内部函数作为返回值,或以某种方式保留下来(属性),之后才会调用,这就会形成了闭包
function fun() {
var a = 10; // funA的活动对象之中;
return function () { //匿名函数的活动对象;
alert(a);
}
}
var b = fun();
b();//10
作用
- 1、 可以打通不同作用域之间的连接 外部作用域可以访问到内部的变量或者方法
- 2、 闭包的变量一直处于引用的状态 所以变量不会销毁
- 3、 避免使用全局变量导致的全局变量污染
- 4、 比局部变量使用起来更灵活
缺点
- 因为闭包不会销毁变量 所以会造成内存泄漏 也就是说当闭包的变量过多时会导致内存占用过大从而导致运行速度变慢
如何解决闭包造成的内存泄漏
- 在闭包使用结束后手动清除或者置空变量或者方法