JavaScript中常见的看代码写结果例题(一)

同学们都知道,在前端面试中不管你的技术栈是vue还是react,各大公司对于JavaScript语言还是有一定要求的,此外在面试手撕代码环节,通常会考你一些JS基础或源码,尤其是看代码写结果最容易踩坑,通常出题的范围离不开以下几个方面:

  1. 事件循环机制问题
  2. 原型链问题
  3. 变量提升问题
  4. 箭头函数问题
  5. 闭包打印

一、事件循环机制问题

要了解事件循环机制,首先要知道Javascript是一门单线程语言,以及语句的执行顺序,还有什么是同步任务、什么是异步任务。这些内容在上一篇博客JavaScript中的事件循环机制中已经详细介绍了,这里直接总结上案例。

1、宏任务一般包括:整体代码script,setTimeout,setInterval、I/O、UI render等
2、微任务一般包括:Promise、Object.observe、MutationObserver等

事件执行顺序

1、先按同步代码顺序运行
2、开始清空微任务队列
3、开始清空宏任务队列(执行一个宏任务,把相关微任务添加入微任务队列)
4、开始清空微任务队列(上一个执行宏任务中加入队列的微任务一次性全部执行完成)
5、开始清空宏任务队列(执行下一个宏任务,把相关微任务添加入微任务队列)
…循环一直到执行完成

1.1 例题

1. console.log('sync statement 1');
2. Promise.resolve().then(function() {
   
3. console.log('micro task 1');
4. setTimeout(function() {
   
5. console.log('macro task 1');
6. }, 0);
7. }).then(function() {
   
8. console.log('micro task 2');
9. });
10. setTimeout(function() {
   
11. console.log('macro task 2'
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安萌萌萌萌萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值