星海

JavaScript · 单选题 · 第 10 题

前端与全栈开发面试 · 第 10 题

下面代码的输出顺序是?

console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);
  1. A1 2 3 4
  2. B1 4 3 2
  3. C1 4 2 3
  4. D1 3 4 2

答案

B B. 1 4 3 2

解析

同步代码先执行,输出 1 和 4。当前宏任务结束后,先清空微任务队列,Promise.then 回调输出 3;之后才取下一个宏任务,setTimeout 回调输出 2。setTimeout 的 0 毫秒只是最小延迟,并不意味着立即执行。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。