JavaScript · 单选题 · 第 10 题
前端与全栈开发面试 · 第 10 题
下面代码的输出顺序是?
console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);- A1 2 3 4
- B1 4 3 2
- C1 4 2 3
- D1 3 4 2
答案
B B. 1 4 3 2
解析
同步代码先执行,输出 1 和 4。当前宏任务结束后,先清空微任务队列,Promise.then 回调输出 3;之后才取下一个宏任务,setTimeout 回调输出 2。setTimeout 的 0 毫秒只是最小延迟,并不意味着立即执行。