闭包: 在一个函数A内定义并返回另外一个函数B,并用变量接收这个函数B。此时会形成闭包。
参考:学习Javascript闭包(Closure) - 阮一峰的网络日志
function demo() {
var a = 10;
return function() {
console.log(++a)
}
}
var fun = demo();
fun(); //11
var fun1 = demo();
fun1(); //11
形成闭包的条件:
- 一个不会被销毁的函数执行空间
- 函数内部直接或者间接的返回一个函数
- 内部函数操作(访问,赋值)着外部函数的变量;
当三个条件都满足的时候,我们管内部的函数叫做外部函数的闭包函数;
闭包销毁: 销毁函数的空间;
方法1.外不再有变量接收;
方法2. 外部接受的变量被重新赋值;
闭包的好处:
-
可以保护内部的变量
-
可以让内部的内容始终保存在内存中不销毁
闭包的坏处:
-
必须要通过函数进行访问
-
因为不销毁,所以导致内存利用率过低,可能导致内存泄漏