面试时我有一个问题。我只是不明白为什么会打印 5 6 7 8 9...
let i = 0;
while (i < 5) {
setTimeout(() => {
console.log(i++);
}, 0);
i++;
}
最佳答案
- 您的代码以
i = 0
开头。 - 当它进入
while
循环时,它会递增到1, 2, 3, 4
并在到达5
时停止. setTimeout
函数是异步的,因此即使延迟为 0,它也会在当前线程完成后调用(while
循环)。- 由于
i
在while
循环结束时处于5
,setTimeout
函数将从在那里,输出它的值并在每个后续console.log()
上递增它
关于javascript - 为什么while循环中的setTimeout是按顺序递增的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53962409/