(面试常见问题3) js的执行机制

JavaScript 重点 —— js的执行机制

引入 相关面试问题(他们都是同一个问题):

(1) JavaScript 中执行机制是什么?
(2) 解析JavaScript中的事件循环?
(3)简单描述一下什么是EventLoop?

前言

关于JavaScript : 它是一门单线程的编程语言,所有的任务需要排队得以执行,前一个任务未结束或者出错,那么后面的任务均得不到执行.如果前一个任务因为耗时太长,则影响后面的任务执行,这样使得JS执行效率过低,所以JS将所有的任务进行了分类处理

1.透过现象看本质

JavaScript 执行机制别名事件循环(EventLoop),该机制是js代码解释执行过程中的的一种执行规则.

2.规则文字详情

(1) 总结 :
在JS中, 任务分为同步任务和异步任务. 所有的任务放在执行栈(JS主线程)中按照顺序执行,在执行过程中遇到同步任务,则立刻执行.若遇到异步任务,则将其放置到宿主环境中。如果在宿主环境中的异步任务达到了执行的条件,则将所要执行的回调函数放入任务队列中,待所有的同步任务执行完毕.主线程会查看任务队列中是否有要执行的异步任务。如果有就从队列头部依次将任务调到到主线程中执行.
(2)分解:抽象的理解同步任务和异步任务
同步任务:
同步任务的代码: console.log() 变量赋值 …
案例: 排队打饭,如果前面的任务不结束,后面的任务不会执行,不存在插队.
异步任务:
同步任务的代码: 事件回调函数 定时器 vue数据变化导致的DOM更新 …
案例: 可以插队,当满足执行的条件,即可被放到任务队列中,等待被执行!比如:5星级饭店的厨师为了效率不必按照顾客点餐顺序做菜
注意:所有的任务都需要在JS主线程中才能够执行!

3.代码详解

<body>
    <button id="btn">A</button>
    <script>
        let btn = document.querySelector('#btn')
        let a = 7
        setTimeout(() => {
            console.log("定时器是异步任务");
        }, 0)
        btn.addEventListener('click', function () {
            console.log('按钮点击事件也是异步任务');
        })
        console.log(a);
    </script>
</body>

4.画图理解代码(彻底理解JS的执行机制)

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值