zoukankan      html  css  js  c++  java
  • 2016-7-30 闭包

    闭包

    • 函数内部再定义一个函数,由此函数来使用函数(父)的局部变量

    使用场景,比如这个局部变量的值要一直使用,则这是一个很好的保存该值的方法

      function f1(){
        var n=999;
        nAdd=function(){n+=1}
        function f2(){
          alert(n);
        }
        return f2;
      }
      var result=f1();
      result(); // 999
      nAdd();
      result(); // 1000
    
    1. 以上的f2函数就是一个闭包
    2. var result = f1(); 实质就是调用f2()
    3. 第一次result()结束之后,f1()函数并没有被回收,所以才会产生第二次result()的结果
    4. f1没有被回收的原因是:

      1)f2函数在f1函数内部(f2依赖f1)

      2)f2被赋值给了全局变量

    5. nAdd也是匿名函数也是一个闭包

    原理

        function a() {
          var i = 0;
          function b() {
            alert(++i);
          }
          return b;
        }
        var c = a();
        c();
    

  • 相关阅读:
    实验五
    实验四
    实验三
    实验二
    寄存器(内存访问)
    实验一
    寄存器
    Mermaid 绘图总结
    电脑查看系统版本
    _ZNote_Chrom_插件_Chrom运行Android软件_APK
  • 原文地址:https://www.cnblogs.com/juzi-123/p/5721799.html
Copyright © 2011-2022 走看看