javascript函数预编译理解

js 函数预编译思路整理

function test(a) {
    console.log(a);
    var a = 123;
    function a() {};
    var b = function() {};
    console.log(a);
    console.log(b);
    function d() {};
    console.log(d);
}

test(1);

如上代码 执行

错误实例 打印依次为

undefined     123    123     undefined   undefined

进入正题 

预编译: js代码的执行是读一行代码执行一行,但在执行之前系统会先对js进行全面扫描检查是否存在低级的语法错误,并不会立即执行语句。

预编译 : 预编译发生在js函数执行的前一刻 他会进行如下处理

1、 首先创立一个AO对象   用于存放数据;

2、找到所有形参和所有变量名  并赋值为undefiend

3、将实参值赋值给形参

4、找函数声明 并将函数体赋值给变量名

完成此四步  预编译结束   函数开始执行

上面的函数  

AO  {

  a   undefined    ====    1 参数   ===  函数体   ====123

 b undefiend    =====函数体

d undefiend    =====函数体   

}

之后 函数执行  开始执行函数语句    完成 赋值

 

即 正确输出为    

function a() {}

123

function() {}

function d() {}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值