美文网首页
2019-04-13 你不知道的javascript之预编译上

2019-04-13 你不知道的javascript之预编译上

作者: esbook | 来源:发表于2019-04-13 22:21 被阅读0次

    老样子,先看下面的函数

    function fn(a){

    console.log(a)  

    var a = 123

    console.log(a)  

    function a(){

    }

    console.log(a)

    var b = function(){

    }

    console.log(b)

        function d(){

        }

    }

    fn(1)

    打印结果 function(){}  123  123  function(){}

    =====华丽的分隔符-----------------------------------------

    js 特点: 单线程 解释性语言

    js 执行 第一步

    预编译:预编译发生再函数执行的前一刻

    预编译四部曲:{

        1.创建ao对象

        2.找形参和变量申明,将形参和变量的名作为ao的属性名,初始值为undefined

        3。 将实参和形参统一  1 =》a f(1)

        4. 在函数体{}中找函数声明,值赋予函数体

    }

    1.创建AO对象(Activation Object)(执行期上下文)

    先定义后执行  fn 声明 优先于 变量申明  

    下面是AO 对象的变化过程

    AO{

        a:undefined; 

        b:undefined,

        d: function d(){}

    }

    AO{

    a:1;

    b:function(){},

    }

    AO{

    a:function(){};

    b:function(){},

    d: function d(){}

    }

    AO{

    a:3;

    b:function(){},

    d: function d(){}

    }

    相关文章

      网友评论

          本文标题:2019-04-13 你不知道的javascript之预编译上

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