首页 > 解决方案 > 为什么while循环中的setTimeout会按顺序递增?

问题描述

面试的时候有一个问题。我只是不明白为什么会打印 5 6 7 8 9 ...

let i = 0;

while (i < 5) {
  setTimeout(() => {
    console.log(i++);
  }, 0);
  i++;
}

标签: javascriptsettimeout

解决方案


这是因为 setTimeout() 函数。即使它延迟了0秒。这将降低它在处理器中的优先级。setTimeout 函数中的所有 5 个操作都将在 while 循环之后运行。因为在它的最后我是5。所以它记录并在那之后递增......


推荐阅读