面试中我有一个问题。我只是不明白为什么会打印5 6 7 8 9 ...
let i = 0;
while (i < 5) {
setTimeout(() => {
console.log(i++);
}, 0);
i++;
}
答案 0 :(得分:1)
这是因为setTimeout()函数。即使延迟了0秒。这将降低其在处理器中的优先级。 setTimeout函数中的所有5个动作将在while循环之后运行。由于它的末尾是5。所以它记录并在此之后递增...
答案 1 :(得分:0)
i = 0
开头。 while
循环时,它将递增到1, 2, 3, 4
,并在到达5
时停止。setTimeout
函数是异步的,因此即使延迟为0,也会在当前线程完成后(while
循环)被调用。i
在5
循环结束时位于while
,因此setTimeout
函数将从那里拾取它,输出它的值并在每个值上加1随后的console.log()