有人可以解释一下这段代码的工作原理。
var display = function(i) {
return function(){
console.log(i);
};
};
for(var i=0; i<5; i++) {
setTimeout(display(i), i*1000);
}
据我所知,每次迭代都会调用display函数。 或者在循环执行完毕后调用,然后触发超时?
答案 0 :(得分:4)
for迭代将快速运行5次,并且等于运行这些行:
setTimeout(display(0), 0*1000);
setTimeout(display(1), 1*1000);
...
setTimeout(display(4), 4*1000);
结果将是:
display(0) will launch after 0 seconds.
display(1) will launch after 1 seconds.
...
display(4) will launch after 4 seconds.
答案 1 :(得分:0)
你循环运行,但显示将在其中的每个setTimeout
间隔值上调用。
所以根据上面的代码示例:它将执行类似 - &gt;
在1 sec
之后第一次调用,在2 sec
之后第二次调用,依此类推,即它将通过时间间隔生成相同代码部分的那么多副本,并将随着时间的推移运行。