在此之前需要明白的知识点:
①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;