zoukankan      html  css  js  c++  java
  • JavaScript(八)

    闭包

    什么是闭包 
    函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回

    function aaa(a){      
          var b = 5;      
          function bbb(){
               a++;
               b++;
             alert(a);
             alert(b);
          }
          return bbb;
      }
    
     var ccc = aaa(2);
    
     ccc();
     ccc();

    改写成封闭函数的形式:

    var ccc = (function(a){
    
      var b = 5;
      function bbb(){
           a++;
           b++;
         alert(a);
         alert(b);
      }
      return bbb;
    
    })(2);
    
    ccc();
    ccc();

    用处 
    1、将一个变量长期驻扎在内存当中,可用于循环中存索引值

    <script type="text/javascript">
        window.onload = function(){
            var aLi = document.getElementsByTagName('li');
            for(var i=0;i<aLi.length;i++)
            {
                (function(i){
                    aLi[i].onclick = function(){
                        alert(i);
                    }
                })(i);
            }
        }
    </script>
    ......
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
        <li>444</li>
        <li>555</li>
    </ul>

    2、私有变量计数器,外部无法访问,避免全局变量的污染

    <script type="text/javascript">
    
    var count = (function(){
        var a = 0;
        function add(){
            a++;
            return a;
        }
    
        return add;
    
    })()
    
    count();
    count();
    
    var nowcount = count();
    
    alert(nowcount);
    
    </script>
  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9041900.html
Copyright © 2011-2022 走看看