理解不了这些:

来源:7-1 [JavaScript]理解闭包

慕媛

2015-04-19 19:04

谁能解释一下视频中这个:document.body.innerHTML = "

a

a2

a3

"; for(var i=1;i<4;i++){ document.getElementById("div"+i).addEventListener('click',function(){ alert(i); }); },为啥alert(i)一直是4,是因为点击div之前,for循环已经执行完毕了吗?如果是,那为啥for循环从i=1一直执行到最后,而没有alert(i)执行

写回答 关注

1回答

  • Bosn
    2015-05-08 10:22:14

    这就是闭包,在初始化函数的处理(addEventListenr)时,click事件处理函数引用的是for循环中的变量i。

    初始化结束后,当用户点击这四个元素中的任何一个时,引用的i仍然是for循环中的i,由于初始化结束后i的值是4,所以自然就都是4.



JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281100 学习 · 1020 问题

查看课程

相似问题