那么什么是闭包呢?专业术语咱也说不出来,在js中的我的理解就是函数嵌套函数,例如这样的:
function
xx(){
function
yy(){
};
};
<body> <ul> <li>aaaaaaaaaaa</li> <li>bbbbbbbbbbb</li> <li>cccccccccccccc</li> <li>bbbbbbbbbbb</li> </ul> </body>
1 <script type="text/javascript"> 2 window.onload=function(){ 3 var oLis=document.getElementsByTagName('li'); 4 for(var i=0;i<oLis.length;i++){ 5 oLis[i].onclick=function(){ 6 alert(i);//弹出来的总是4,为什么呢? 7 }; 8 } 9 10 }; 11 </script>
因为onclick事件是当你点击的时候才会触发的,但是当你点击的时候for循环早就执行完毕了,所以每次点击都是最后一个值,说漏了,在执行for循环的时候其实function(){alert(i);};是没有执行的,您可以用火狐调试看看.
那么怎么样才能让它弹出0,1,2。。。呢? "√"就是闭包
详情请看:这是这位师兄的随笔,小弟我学习了一下:
http://www.cnblogs.com/xhk-yjp/archive/2012/08/29/xhk-yjp-jsbb.html
把我个人,学到的记录了下了,仅此而已,尊重作者!