美文网首页
javascript预编译+例题分析

javascript预编译+例题分析

作者: 刘翾 | 来源:发表于2017-11-08 20:37 被阅读59次

    js运行三部曲

    • 语法分析
    • 预编译
    • 解释执行

    预编译前奏

    1. imply global 暗示全局变量, 即任何变量, 如果为经声明就赋值, 此变量就为全局对象所有.
    2. 一切声明的全局变量, 全是window的属性.
      例: var a = 123; --> window.a = 123;

    预编译

    四部曲:

    • 创建AO对象

    • 找形参和变量声明, 将变量和形参名作为AO属性名, 值为undefined

    • 将实参值和形参统一

    • 在函数体里面找函数声明, 值赋予函数体.
      例:

      例子
      以当前函数为例子
      创建AO对象为{
      a: undefined
      b: undefined
      }
      第三部将实参值和形参相统一
      AO = {
      a : 1,
      b : undefined
      }
      第四部, 在函数体里找函数声明, 值赋予函数体
      Ao = {
      a: function a( ){ },
      b: undefined,
      d: function d( ) { }
      }
      因此该例子打印出来的结果应该为
      例子
    • 总结
      变量声明提升,
      函数声明整体提升


    相信你已经掌握了方法, 因此我们再来一个例子来试试

    例子
    function d ( ){ }创建AO对象, function d ( ){ }形参变量声明
    AO = {
    a : undefined,
    b : undefined,
    c : undefined
    }
    第三部实参与形参相统一
    AO = {
    a : 1,
    b : undefined,
    c : undefined
    }
    第四部,在函数体里找函数声明, 值赋予函数体
    AO = {
    a : 1,
    b : function b ( ){ },
    c : undefined,
    d ; function d ( ){ }
    }
    最后开始执行, 先打印a为1, 借下来将c = 0, a = 3, b = 2, 打印b为2, 再打印b为2.


    再来看一个例子

    例子
    注意: 这里的a也是全局的

    相关文章

      网友评论

          本文标题:javascript预编译+例题分析

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