次のJavaScriptコードを実行したときのコンソール出力の順序として正しいものはどれか? console.log(1); setTimeout(()=>console.log(2),0); Promise.resolve().then(()=>console.log(3)); console.log(4);
ブラウザやNodeのイベントループにおいて、マイクロタスク(Promiseのthenなど)はマクロタスク(setTimeoutなど)よりも優先されます。コードは順に同期で1を出力し、setTimeoutがマクロタスクキューへ登録され、Promise.thenはマイクロタスクキューへ登録され、次に同期で4を出力します。現在のターン終了後にマイクロタスクが処理されて3が出力され、その後マクロタスクで2が出力されます。したがって順序は1,4,3,2です。