变量提升与执行上下文,

变量提升  (预处理)

js引擎在代码正式施行前会做一个预处理的工作:

  1.收集变量

  2.收集函数

变量提升的原理即是html中的执行上下文概念

执行上下文(execute context) EC

理解:代码执行的环境

时机:代码正式执行前会进入到执行环境

工作:

  1.创建变量对象:

    1)变量

    2)函数及函数的参数

    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.在上一个宏任务队列执行完毕之后如果有微任务队列就会执行微任务队列中的所有任务

 

转载于:https://www.cnblogs.com/BR-Tao/p/11360517.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值