次のコードが発生する順序を確認しようとしています。JavaScriptスタック、キュー、イベントループ?
function square(n) {
return n * n;
}
setTimeout(function(){
console.log("Hello");
}, 0);
console.log(square(2));
のsetTimeout()は、スタックからポップされ、その後、匿名の()は、キューになります。
setTimeout()はスタック上にあり、anonymous()はキューに行き、setTimeout()はスタックからポップされます。
正しい順序はどれですか?このlinkで試してみましたが、setTimeout()が最初にポップされてから匿名()がキューに移動することがわかりましたが、これを確認するだけです。
なぜ** 0 **でsetTimeoutを使用していますか? SetTimeoutはスタックからポップされず、コールバックを設定してすぐに実行されます。 – user2182349
スタックとキューでどのように動作するかを観察するために、0に設定しました。 anonymous()がキューにある間、console.log(square(2))が発生し、スタックが完全に空の場合、イベントループがアクティブになり、anonymous()がキューからスタックに送られます。 –