闭包的总结
闭包的应用场景 缓存中间变量
有一个函数A, 在函数 A内部返回一个函数B
function funA(){
var int = 100;
return function funB(){
var num = int;
return num;
}
}
在函数B中访问函数A 的私有作用域变量
了解闭包
闭包的生成有三个必要条件(缺一不可)
1 . 在函数A内部直接或者间接返回一个函数B
2. B函数内部使用着A 函数的私有变量(私有数据)
3. A函数外部有一个变量收着函数B
从而形成了一个不会销毁的函数空间
闭包空间
我们不管这个不会销毁的a 函数的执行空间做叫做 闭包空间
把函数a 里面的返回的 函数b ,叫做函数a 的闭包函数
官方给的定义有一句话: 闭包 => 函数内部的函数
闭包的特点 (优缺点并存)
1.延长了变量的生命周期
优点: 因为执行空间不销毁,变量也没有销毁
缺点: 因为执行空间不销毁,会一直存在内存中
- 可以访问函数内部的私有变量
优点: 利用闭包函数可以访问函数内部的私有变量
缺点: 执行空间不销毁,会一直存在内存中 - 保护私有变量(只要是函数,就有个特点)
优点: 保护私有变量不被外界访问
缺点: 如果想访问,必须要利用闭包函数
闭包的函数的缺点: 致命的去缺点
因为当一段内存空间中有一个不会被销毁的东西存在
那么就会出现内存占用,如果过多,就会导致内存泄漏
那么结果就是 内存泄漏
闭包的作用
就是当你需要延长变量的生命周期
或者你需要访问某一个函数内部的私有数据的时候
你可以使用闭包 函数来解决
前提是:
如果有别的方法,尽量不要使用闭包函数
只有到没有招的时候,我们在使用闭包函数
闭包慎用!!!!