javascript预编译+例题分析

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也是全局的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值