【发布时间】:2022-11-22 10:20:55
【问题描述】:
(function timer() {
for (var i = 0; i <= 5; i++) {
(function () {
setTimeout(function clog() {
console.log(i);
}, i * 1000);
})();
}
})();
这是输出-
6
6
6
6
6
6
IIF 是如何加载到堆栈中的?是否所有这些都被推入然后处理并一个一个弹出以获得 i = 6? 打印 6 时输出确实等待 1 秒。
【问题讨论】:
-
你没有用你的调试器亲眼看看吗?
-
setTimeout()回调不在堆栈中。它们在运行时管理的队列中。除了计时器触发时的回调之外,堆栈基本上是空的。
标签: javascript