理解不了這些:
誰能解釋一下視頻中這個: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)執行
誰能解釋一下視頻中這個: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)執行
2015-04-19
舉報
2015-05-08
這就是閉包,在初始化函數的處理(addEventListenr)時,click事件處理函數引用的是for循環中的變量i。
初始化結束后,當用戶點擊這四個元素中的任何一個時,引用的i仍然是for循環中的i,由于初始化結束后i的值是4,所以自然就都是4.