setTimeout 会显示什么?
重要程度: 5
下面代码中使用 setTimeout
调度了一个调用,然后需要运行一个计算量很大的 for
循环,这段运算耗时超过 100 毫秒。
调度的函数会在何时运行?
- 循环执行完成后。
- 循环执行前。
- 循环刚开始时。
alert
会显示什么?
let i = 0;
setTimeout(() => alert(i), 100); // ?
// 假设这段代码的运行时间 >100ms
for(let j = 0; j < 100000000; j++) {
i++;
}
任何 setTimeout
都只会在当前代码执行完毕之后才会执行。
所以 i
的取值为:100000000
。
let i = 0;
setTimeout(() => alert(i), 100); // 100000000
// 假设这段代码的运行时间 >100ms
for(let j = 0; j < 100000000; j++) {
i++;
}