JavaScript堆栈,队列和事件循环?

时间:2017-12-01 22:21:26

标签: javascript stack queue runtime event-loop

我正在尝试验证以下代码的发生顺序。

function square(n) {
    return n * n;
}

setTimeout(function(){
    console.log("Hello");
}, 0);

console.log(square(2));
  1. 从堆栈中弹出setTimeout(),然后anonymous()进入队列。

  2. 当setTimeout()在堆栈上时,anonymous()进入队列,然后从堆栈中弹出setTimeout()。

  3. 以上哪项是正确的顺序?我在这个link上试了一下,我注意到的是首先弹出setTimeout()然后匿名()进入队列,但我只需要验证它。

1 个答案:

答案 0 :(得分:2)

第一个答案是正确的。 setTimeout函数弹出然后anonymous(),作为setTimeout中第一个参数写入的内部未命名函数被发送到队列并保留在那里,直到所有其他代码运行;