美文网首页
变量提升预处理和执行上下文,如何避免变量提升

变量提升预处理和执行上下文,如何避免变量提升

作者: 9月的甜橙子 | 来源:发表于2021-09-27 23:16 被阅读0次

    js引擎在代码执行之前会做一个预处理的工作:收集变量和收集函数
    预处理工作的依据是:var和function{}
    对于var username='xiaoming', 会定义username变量但是不会赋值,所以此时username是undefined
    对于function{}会提前定义函数
    以上预处理工作做完后,会正式执行代码

    console.log(username); // undefined
    var username = 'xiaoming';
    console.log(username); // xiaoming
    
    fun() // have fun!
    function fun(){
      console.log('have fun!')
    }
    

    执行上下文 (execute context, EC)

    代码在执行之前会进入执行环境,即执行上下文。
    注意执行上下文是在执行前,而作用域是在定义时。
    形成执行上下文做的工作有:

    1. 创建变量
    2. 确定this指向
    3. 创建作用域链

    总结:
    ECObj={
    变量对象:变量,函数,函数形参,
    this:{window || 调用它的对象},
    scopeChain: 父级作用域链+当前的变量对象
    }


    如果本文对您有帮助,请给我点赞哦~ 谢谢~

    相关文章

      网友评论

          本文标题:变量提升预处理和执行上下文,如何避免变量提升

          本文链接:https://www.haomeiwen.com/subject/cvaugltx.html