考虑这个简单的例子:
var count = 0;
for (var i = 0; i < 4; i++ ) {
setTimeout(function() {
console.log(i, count++);
}, i * 200);
}
这将输出以下内容:
4 0
4 1
4 2
4 3
我猜测i
总是解析为4,因为setTimeout回调封闭了变量I,但我想不出同样的规则对于count
为什么不适用。
var count = 0;
for (var i = 0; i < 4; i++ ) {
setTimeout(function() {
console.log(i, count++);
}, i * 2000 );
}