闭包

             //好处
            //1:希望变量长期住扎内存里
            //2:避免全局变量的污染
            //3:私有变量的存在
            
            function aaa(){
                var a=1;
                return function(){
                    a++;
                    alert(a);
                }
            }
//下面这个aaa()是已经执行完他自身了
//赋值给变量b就是调用return返回值 var b=aaa(); b();//2 b();//3 alert(a)//undiefind var aaa=(function(){ var a=1; return function(){ a++; alert(a); } })(); aaa(); aaa(); var aLi=document.getElementsByTagName("li");
for(var i=0;i<aLi.length;i++){ aLi[i].onclick=function(){ alert(i)//3 这里等于3是因为外面的for循环一上来就执行完了,最后就返回3 } } //改成闭包方式 //闭包的特性之一:外部的变量执行完不会影响内部的所以可以把i当参数传进去 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); } } <ul> <li>1111</li> <li>1111</li> <li>1111</li> </ul>

 

posted @ 2015-08-07 11:12  Mi文  阅读(124)  评论(0编辑  收藏  举报