a 你可以想像下,前後兩段script程式碼的效果。
如果你能看出來效果的區別,那麼恭喜你。至少我思考了很久,才明白裡面的玄妙。
是的。你沒有看錯,這裡的第一段程式碼,無論你點擊哪一個鏈接,輸出的都是I am link # 8.
第二段程式碼,才是你真正想要的結果,那麼為什麼呢。
看下面的程式碼:
複製程式碼
代碼如下: 代碼如下: var ('a'); for (var i = 0; i (function(index){ elems[i].addEventListener( 'click', function (e) { e.preventDefault(); alert('I am link #' index); }, 'false'); })(i) ; //而這裡的則不一樣//雖然循環結束後i 的值變成了8 //但是在封裝在閉包內的index 確實一直被locked 住的//一直保存在記憶體中。 //準確的說 應該是整個函數都lock在內存中. } 這裡可能需要一些javascript閉包的知識。 以上程式碼,想了很久,記錄下來,以防止忘記。