JS 微任务和宏任务(面试题常用)

本文介绍了JavaScript中的宏任务和微任务,包括它们的概念、执行顺序以及实例分析。宏任务主要包括主代码块、定时器等,而微任务则涉及Promise、process.nextTick等,它们在事件循环中的执行顺序遵循先宏后微的原则。通过一个输出10个10的示例,解释了自执行函数如何影响循环变量的值。最后列举了常见的微任务和宏任务类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

概念:
1. 宏任务:当前调用栈中执行的代码成为宏任务。(主代码快,定时器等等)。
2.微任务: 当前(此次事件循环中)宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调事件。(promise.then,proness.nextTick等等)。 3. 宏任务中的事件放在callback queue中,由事件触发线程维护;微任务的事件放在微任务队列中,由js引擎线程维护。
js执行顺序,(先执行宏任务列再是微任务队列)
例子1:

for(var i=0;i<10;i++){
setTimeout(function(){
    console.log(i)
},0)
}


输出 10个10
‘-------------------------------------------------------------------------------’
2,加立即执行函数

分析:尽管循环执行结束,i值已经变成了3。但因遇到了自执行函数,当时的i值已经被 lockedIndex锁住了。也可以理解为 自执行函数属于for循环一部分,每次遍历i,自执行函数也会立即执行。所以尽管有延时器,但依旧会保留住立即执行时的i值。

for(var i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值