首页 > 解决方案 > 在 for 循环中使用 SetTimeOut

问题描述

我最近提出了一个问题,要求查找这两个代码片段的输出:

第一:

let i;

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

第二个:

for (let i = 0; i <= 4; i++) {
  setTimeout(() => {
    console.log(i);
  }, 0);
}

我熟悉事件循环的工作原理。在setTimeout中的每个迭代回调函数在等待 0 毫秒后被添加到任务队列中。只要调用堆栈为空,就会触发这些回调函数。

但是两个代码片段都给出了不同的结果。

帮助我解释为什么他们给出不同的结果。

标签: javascriptfor-loopasynchronouscallbackevent-loop

解决方案


推荐阅读