JS闭包

来源:互联网 发布:数据挖掘招聘要求 编辑:程序博客网 时间:2024/06/05 05:12
闭包什么是闭包 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回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>