我閱讀倒閉了,我只好很難理解這兩個代碼段之間的區別:這些JS代碼片段如何工作?
var myElements = [ /* DOM Collection */ ];
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = function() {
alert('You clicked on: ' + i);
};
}
上面的代碼應該只顯示i
99,每的onclick
function getHandler(n) {
return function() {
alert('You clicked on: ' + n);
};
}
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = getHandler(i);
}
這上面的代碼爲每個元素點擊事件顯示'i'的正確值!
我不明白爲什麼第一個不顯示正確的值i
。如果沒有,爲什麼第二個顯示正確的值?
他們從this link