首页 > 其他分享 >【JS每日刷题】栈与任务队列1

【JS每日刷题】栈与任务队列1

时间:2022-09-02 19:11:51浏览次数:52  
标签:foo bar log 队列 JS const setTimeout 刷题

代码

题目来源于前端面试题宝典

const foo = () => console.log('First')
const bar = () => setTimeout(() => console.log('Second'))
const baz = () => console.log('Third')

bar()
foo()
baz()

//最终输出 :First Third Second

原因分析

首先调用bar这个箭头函数中,它有一个setTimeout函数,该函数由WebAPI提供,当回调推送至WebAPI时,setTimeout将从栈弹出。

接着foo进入栈,输出结果,然后弹出

baz被也进入栈,然后被调用,输出结果。

最后由于WebAPI都已经拿走了setTimeout函数,再放回去多没面子,所以要把回调函数推到任务队列,于是就形成了事件循环

现在栈为空,则把队列的第一个元素bar推送入栈,输出Second

标签:foo,bar,log,队列,JS,const,setTimeout,刷题
From: https://www.cnblogs.com/PaturNax/p/16649466.html

相关文章