1
skybr 2014-12-20 14:39:26 +08:00
setTimeout( alert.bind(this, i), 8000*i);
|
2
Mutoo 2014-12-20 14:43:48 +08:00
由于js 里词法作用域的关系 function 里的 i 引用的是闭包中的 i 当程序执行到 function 的时候,i 已经变成 10 了。setTimeout 的时候并没有保留当时的 i 的副本,所以可以这样改:
for (var i = 0; i < 10; i++) { setTimeout(function(x){alert(x)}, 8000*i, i); } |