我正在尝试验证以下代码的发生顺序。
function square(n) {
return n * n;
}
setTimeout(function(){
console.log("Hello");
}, 0);
console.log(square(2));
从堆栈中弹出setTimeout(),然后anonymous()进入队列。
当setTimeout()在堆栈上时,anonymous()进入队列,然后从堆栈中弹出setTimeout()。
以上哪项是正确的顺序?我在这个link上试了一下,我注意到的是首先弹出setTimeout()然后匿名()进入队列,但我只需要验证它。
答案 0 :(得分:2)
第一个答案是正确的。 setTimeout函数弹出然后anonymous(),作为setTimeout中第一个参数写入的内部未命名函数被发送到队列并保留在那里,直到所有其他代码运行;