阅读 101

JavaScript 闭包

闭包

闭包是函数。

闭包(closure)指有权访问另一个函数作用域中变量的函数

一个作用域可以访问另一个函数内部的局部变量。被访问变量所在函数就形成闭包。

1 闭包定义

  • 当嵌套的内部函数引用了外部函数的变量时就产生了闭包。

  • 通过chrome工具得知: 闭包本质是内部函数中的一个对象, 这个对象中包含引用的变量属性。

2 闭包的主要作用

  • 延伸了变量的作用范围(生命周期)

  • 让函数外部能操作内部的局部变量。

  • 保护变量不受外界污染,使其一直存在内存中。

  • 写一个闭包程序。

    function fn1() {
      var a = 2;
      function fn2() {
        a++;
        console.log(a);
      }
      return fn2;
    }
    var f = fn1();
    f();	//3
    f();	//4
    复制代码

3 闭包应用

  • 模块化: 封装一些数据以及操作数据的函数, 向外暴露一些行为。

  • 循环遍历加监听。

  • JS框架(jQuery)大量使用了闭包。

4 缺点

  • 变量占用内存的时间可能会过长。
  • 可能导致内存泄露。
  • 解决:
    • 及时释放 : f = null; //让内部函数对象成为垃圾对象。
文章分类
前端
文章标签