zoukankan      html  css  js  c++  java
  • 闭包2

     1 <body>
     2     <button>按钮1</button>
     3     <button>按钮2</button>
     4     <button>按钮3</button>
     5 <script>
     6     var btns = document.getElementsByTagName('button');
     7     for (var i = 0; i < btns.length; i++) {
     8         var btn = btns[i];
     9         (function (i) {
    10             btn.onclick = function (ev) {
    11                 alert('点击了' + (i + 1) + '个');
    12             }
    13         })(i)
    14     }
    15 </script>
     1  function fn1() {
     2      var num = 10;
     3      function fn2() {
     4        console.log(num);
     5      }
     6      return fn2;
     7   }
     8 
     9   fn1();
    10   var f = fn1();
    11   f();
    12 内部函数获取外部函数的变量

    闭包主要是为了解决局部变量无法长久的保存,而全局变量可能造成变量污染

    垃圾回收机制

     1 <script type="text/html">
     2     function fn1() {
     3         var num = 10;
     4         function fn2() {
     5             num++;
     6             console.log(num);
     7         }
     8         return fn2;
     9     }
    10 
    11     var f = fn1();
    12     f();
    13     f();
    14 
    15     f = null  //指针指向
    16 
    17 </script>

    闭包的产生是在嵌套函数定义执行完时就产生了(不是在调用的时候)

    闭包的死亡f=null

    小闭包:

    (function(){})()

  • 相关阅读:
    rapidjson代码封装类
    CEF3.2623使用记录:windows编译
    ACE主动对象模式
    理解i++和++i
    ubuntu安装vmplayer出现问题的解决方法
    WinSpy涉及的windows api
    winXP下安装opensshd服务
    资源下载链接
    FPM打包工具
    mysql error code
  • 原文地址:https://www.cnblogs.com/zhangzhengyang/p/11229066.html
Copyright © 2011-2022 走看看