1、所有代码分类
初始化执行代码(同步代码):包含绑定Dom事件监听 ,设置定时器,发送ajax请求的代码
回调执行的代码(异步代码):处理回调逻辑
2、js引擎执行代码的基本流程:
初始化代码====》回调代码
3、模型的2个重要组成部分:
事件管理模块(定时器/DOM)
回调队列
4、模型的运转流程
执行初始化代码,将事件回调函数交给对应模型管理
当事件发生时,管理模块会将回调函数及其数据添加到回调队列中
只有当初始化代码执行完后(可能需要一定时间),才会遍历读取回调队列中的回调函数执行
等待处理的回调函数
- function fn1(){
- console.log('fn1')
- }
- fn1();
- document.getElementById('btn').onclick=function(){
- console.log('点击了')
- }
- setTimeout(function(){
- console.log('定时器执行')
- },2000);
分线程将回调函数放入回调队列 然后等待主线程执行完成后执行

执行栈:所有的代码都在此空间中执行
浏览器内核:js引擎模块(在主线程处理)
其他模块(在主/分线程处理)
回调队列包含(任务队列 消息队列 事件队列)
事件轮询:从任务队列中循环取出回调函数放入执行栈中处理(一个接一个)