js中的闭包


js中的闭包

含义

闭包函数的意义就是,让子函数返回父函数中的变量,这样一来,一个作用域就有权访问另一个作用域的局部变量。

作用

  • 变量作用域范围的延申,能够让其他函数访问函数作用域中的变量(局部变量)
  • 创建外部可访问的隔离作用域,避免全局变量污染

    缺点,被引用的私有变量不能被销毁,增大了内存消耗,造成了内存泄露

    内存泄漏解决方法。使用完变量后手动赋值为null,利用垃圾回收机制回收。

    代码

    function father() {
    let num = 123;
    return function() {
      let n = 0;
      return num; // 调用了局部变量num,导致num无法被销毁
    }
    }
    const re = father(); // 这个时候re就是一个闭包函数;
    re(); //123
    // re保存的是父函数返回的匿名函数,而这个匿名函数调用了num这个局部变量
    // 所以num这个局部变量无法被销毁,产生了内存消耗。
    // n每次调用都是新创建,所以当匿名函数执行完之后,就一起销毁了。
    

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