返回课程

setTimeout 会显示什么?

重要性:5

在下面的代码中,有一个 setTimeout 调用被调度,然后运行一个繁重的计算,该计算需要超过 100 毫秒才能完成。

计划的函数将在何时运行?

  1. 循环之后。
  2. 循环之前。
  3. 循环开始。

alert 将显示什么?

let i = 0;

setTimeout(() => alert(i), 100); // ?

// assume that the time to execute this function is >100ms
for(let j = 0; j < 100000000; j++) {
  i++;
}

任何 setTimeout 都会在当前代码执行完毕后才运行。

i 将是最后一个值:100000000

let i = 0;

setTimeout(() => alert(i), 100); // 100000000

// assume that the time to execute this function is >100ms
for(let j = 0; j < 100000000; j++) {
  i++;
}