js引擎在代码正式施行前会作一个预处理的工做:html
1.收集变量函数
2.收集函数this
变量提高的原理便是html中的执行上下文概念线程
理解:代码执行的环境rest
时机:代码正式执行前会进入到执行环境htm
工做:对象
1.建立变量对象:队列
1)变量作用域
2)函数及函数的参数io
3)全局:window
4)局部:抽象但确实存在的对象
2.确认this的指向
1)全局:this -----》 window
2)局部:this ------》 调用的对象
3.建立做用域链(事实上在代码编译阶段就建立了)
父级做用域链 + 当前的变量对象
4.扩展:
ECObj = {
变量对象:{变量 , 函数 , 函数的形参 }
scopeChain:父级做用域链 + 当前的变量对象,
this:{ window || 调用的对象}
}
分类:setTimeout setInterval requrestAnimationFrame(ie)
1.宏任务所处的队列就是宏任务队列
2.第一个宏任务队列中只有一个任务:执行主线程的js代码
3.宏任务队列能够有多个
4.当宏任务队列中的任务所有执行完之后会查看是否有微任务队列,若是有先执行微任务队列中的全部任务,若是没有就查看是否有宏任务队列
分类: new Promise( ) . then( 回调 ) process.nextTick
1.微任务所处的队列就是微任务队列
2.只有一个微任务队列
3.在上一个宏任务队列执行完毕以后若是有微任务队列就会执行微任务队列中的全部任务