经典指数          
原因
3157
浏览数
0
收藏数
 

现有如下html结构
<ul>
 <li>click me</li>
 <li>click me</li>
 <li>click me</li>
 <li>click me</li>
</ul>
运行如下代码:
    var elements=document.getElementsByTagName('li');
    var length=elements.length;
    for(var i=0;i<length;i++){
        elements[i].onclick=function(){
        alert(i);
    }
 }
依次点击4个li标签,哪一个选项是正确的运行结果()?
  • 依次弹出1,2,3,4
  • 依次弹出0,1,2,3
  • 依次弹出3,3,3,3
  • 依次弹出4,4,4,4

     举报   纠错  
 
切换
1 个答案
我的理解是:每个li标签的onclick事件执行时,本身onclick绑定的function的作用域中没有变量i,i为undefined,则解析引擎会寻找父级作用域,发现父级作用域中有i,且for循环绑定事件结束后,i已经赋值为4,所以每个li标签的onclick事件执行时,alert的都是父作用域中的i,也就是4。这是作用域的问题。
 
切换
撰写答案