js的预编译

在此之前需要明白的知识点:

①arguments[i]:第i个实参;

变量提升

③var优于funcyion  http://t.csdn.cn/TZn6x


全局预编译(代码块script执行前)
创建GO对象(Global Object)全局对象。
找变量声明,将变量名作为GO属性名,值为undefined
查找函数声明,作为GO属性,值赋予函数体(赋值)

————————————————
版权声明:本文为CSDN博主「small_Axe」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/houwhu/article/details/121752494

局部预编译(函数执行前)
创建AO(Activation Object)对象(执行期上下文)
①查找函数形参及函数内变量声明,形参名及变量名作为AO对象的属性,值为undefined

函数形参:                                                              变量:

                           
②实参形参相统一,实参值赋给形参

实参:

同时要注意arguments在实参与形参统一时起到的作用!


查找函数声明,函数名作为AO对象的属性,值为函数引用。

学习心得:

第一步:先找GO,①找变量(var)。②找函数。③试运行。如有函数进入函数直接到第二步。

第二步:找AO,①找形参和变量(var)。②形参与实参相互同一,将实参值给形参变量,其次考虑arguments。③找函数。④试运行函数内部剩余步骤。

注:

var b=1;

test(1,2);

相当于: 

var b;

test(1,2);

b=1;

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值