<分区>
以下每次都会提醒 2
。
function timer() {
for (var i = 0; i < 3; ++i) {
var j = i;
setTimeout(function () {
alert(j);
}, 1000);
}
}
timer();
不应该 var j = i;
将 j
设置到 setTimeout 的单独范围内吗?
而如果我这样做:
function timer() {
for (var i = 0; i < 3; ++i) {
(function (j) {
setTimeout(function () {
alert(j);
}, 1000);
})(i);
}
}
timer();
它会按应有的方式提醒 0
、1
、2
。
有什么我想念的吗?