源于闭包的一个问题

<p>产品一</p>     
<p>产品二</p>     
<p>产品三</p>     
<p>产品四</p>     
<p>产品五</p>   
<script type="text/javascript">
    var pAry = document.getElementsByTagName("p");
    function init0() {           
        for( var i=0; i<pAry.length; i++ ) {     
            pAry[i].onclick = function() {      
                console.log(i);   
            }     
        }     
    };
</script>

这个闭包的经典案例为什么输出的i都是5,麻烦哪位给个详细的解释

阅读 2.6k
1 个回答

很简单啊,因为click是响应事件啊,循环完之后才响应的,这个时候i就是5啊。你的程序是让点击的时候输出 i变量,程序可是很老实的呢。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题