在看js闭包这一块儿,有一个地方难以理解。代码如下。为什么打印出来的始终是6呢<script>
window.onload = function(){ var ul =document.getElementsByTagName('ul')[0];
var li = ul.getElementsByTagName('li'); for(var i=0;i<li.length;i++){
li[i].onclick = function(){ console.log(i);
}
}
}</script><body><ul>
<li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul></body>
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
老有人问这种文问题,当然我刚学的时候,也来社区问过这个问题。简单说下,你那个绑定的点击事件函数,是当你点击了之后才会出触发,进入那个函数执行相应的代码的,所以一开始那个 i=1,2,3... 根本就没到那个函数里面去,你只是每次都给li 绑定了个 function(){console.log(i)};这个i并没有值。然后等你 去点击触发,这个时候i已经循环了一遍了,最后i就变成了 6,最后 进去执行那个函数 的时候 打印的那个i 当然就是 6咯。
添加回答
举报
0/150
提交
取消