我正在阅读有关闭包的信息,但我很难理解这两个代码片段之间的区别:
var myElements = [ /* DOM Collection */ ];
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = function() {
alert( 'You clicked on: ' + i );
};
}
上面的代码应该只i
在每次点击时显示为 99
function getHandler(n) {
return function() {
alert( 'You clicked on: ' + n );
};
}
for (var i = 0; i < 100; ++i) {
myElements[i].onclick = getHandler(i);
}
上面的代码为每个元素点击事件显示了正确的“i”值!
我不明白为什么第一个不显示正确的值i
。如果不是,为什么第二个显示正确的值?
它们取自此链接