基本上,我有一个循环,如果满足某个条件,它会触发setTimeout。 但是超时功能需要循环的值(即'i'),如下例所示。 我该怎么做?
for( var i = 0; i <= 10; i++) {
if(something){
setTimeout(function(){
console.log(i);
}, 1000);
}
}
答案 0 :(得分:2)
使用 IIFE(立即调用的函数表达式),它是一种JavaScript设计模式,它使用JavaScript的函数范围生成词法范围。
for( var i = 0; i <= 10; i++) {
if(something){
(function(i){
setTimeout(function(){
console.log(i);
}, 1000);
})(i);
}
}
答案 1 :(得分:0)
for (var i = 0; i <= 10; i++) {
if (true) {
setTimeout((function(i) {
return function() { console.log(i); }
})(i), 1000 * i);
}
}
我觉得你想要时间1000 * i
? (它已经在上面的代码中)