首页 > 解决方案 > 为什么 alert() 函数的行为如此奇怪?

问题描述

如果我跑

for (let i = 0; i < 1000; i++) {
  console.log(i)
}
window.alert('Hello World!');

然后在 for 循环完成之前弹出警告框。

但是,如果我不使用 for 循环,只需编写 console.log(1)..console.log(1000) 语句,然后放入 window.alert('Hello World')。它一直等到所有 console.log 函数都被执行。

console.log(1)
console.log(2)
.
.
.
console.log(1000)
console.log('Hello World');

放置 console.log 语句的两种方式都做同样的事情。但是警报框的行为在每种情况下都是不同的。

为什么会这样?如果警报是 Web API 的一部分,它不应该被推送到消息队列中,然后在堆栈变空时仅(通过事件循环)推送到调用堆栈吗?为什么在第一种情况下警报出现在 for 循环的中间?

标签: javascript

解决方案


推荐阅读