理解闭包

理解闭包,函数调用时能够读取到其生成时候的环境变量,例如


    var a =1;
      var b=function () {
          var a=2;
          return function () {
              console.log(a);
          }
      }
      b()();//打印出2  

当函数生成时 其作用域里 a=2 ;调用时继续读取其生成时的作用域;

闭包的使用例子


   <html>
   <body>
   <div>1</div>
   <div>2</div>
   <div>3</div>
   <div>4</div>
   <div>5</div>
   <script>
   var divs = document.getElementsByTagName( 'div' );
   for ( var i = 0, len = divs.length; i < len; i++ ){
   divs[ i ].onclick = function(){
   alert ( i );
   }
   };
   </script>
   </body>
   </html>

>此时你点击任何一个div打印的都是5用闭包的解决方法



   var divs = document.getElementsByTagName( 'div' );
   for ( var i = 0, len = divs.length; i < len; i++ ){
    (function (i) {
              divs[i].onclick = function(){
                  alert (i);
              }
          }(i))
   }
   };

更通俗点就是这样

var divs = document.getElementsByTagName( ‘div’ );
for ( var i = 0, len = divs.length; i < len; i++ ){
(function () {
var b=i
divs[b].onclick = function(){
alert (b);
}
}())
}
};

``