JS中的闭包


JS 中的闭包


1. 什么是闭包

比如下面一段代码就产生了闭包,而闭包的本质,是内部函数中的一个对象,这个容器中包含引用的变量

function fn1( ){
    let a = 2;
    function fn2( ){
        a++;
        console.log(a)
    }
    return fn2
}
let f = fn1( );
f( ) // 控制台输出3

2.闭包是什么时候产生的

闭包的产生条件与时机如下

  1. 函数存在嵌套关系
  2. 内部函数引用了外部函数的变量
  3. 外部函数调用,内部函数定义执行的时候(而不是内部函数执行的时候),产生了闭包

3.闭包是什么时候消失的

闭包会在内部函数成为垃圾对象的时候。对于上面的例子就是我们手动释放f = null的时候
如果不进行释放的话,就会造成内存泄漏的问题,如果内存泄漏较多就会造成内存溢出的问题,简而言之就是内存不够用了


4. 闭包的作用

闭包可以延长外部函数变量对象的生命周期,就是例子中a的生命周期


文章作者: Sage
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Sage !
  目录