美文网首页
js底层原理一(变量提升、函数提升)

js底层原理一(变量提升、函数提升)

作者: 沐雨芝录 | 来源:发表于2019-03-22 14:19 被阅读0次

    前言:

    js是解释性语言,运行时才能解析出代码对错。

    为什么可以变量函数提升?

    js代码是自上而下执行,但是在js代码执行前,会先进行词法分析。在词法分析时,将变量和函数进行了提升。

    js执行两个阶段:

    • 1.词法分析
    • 2.执行

    词法分析三步骤

    1、分析参数
    2、再分析变量的声明
    3、分析函数声明

    举例

    1 function fn(a){
    2   var a = 1;
    3   function a(){
    4      console.log("a函数")
    5   }
    6    alert(a)
    7 }
    8 fn(2)
    

    实际实现代码:

    1 function fn(a){
    2  var a = undefined;
    3    a = 2;
    4    a = function a(){
    5       console.log("a函数")
    6    }
    7    a = 1;
    8    alert(a); // 1
    9 }
    10 fn(2)
    

    具体分析:

    词法分析三步:

    函数在运行的瞬间,生成一个活动对象(Active Object),简称AO
    第一步,分析函数参数:
      形式参数:AO.a = undefined
      实参:AO.a = 2
    第二步,变量声明:
      仅做一件事,没有var a的话,就var a;
    第三步,函数声明:
      有函数a,AO.a = function a() {}

    运行期:

    将a赋值内部变量,即a=1;


    不理解的可以私信。

    相关文章

      网友评论

          本文标题:js底层原理一(变量提升、函数提升)

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