有问题的代码:
function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);
document.body.appendChild(link);
}
}
window.onload = addLinks;
我的问题是,因为返回的函数是一个闭包,而变量num
是每次函数执行时的全局变量,num
应该保持当前值替换旧值,并且应该在任何地方自动更新该值。但这并没有发生——当我单击每个链接时,我会得到不同的值。为什么会这样?