预编译
注意本文主要会以视频的形式呈现,由于目前微信不支持直接发送付费视频,故这里以图文的形式出现,视频见最后,这里需要注意的是,已经购买知识星球的童鞋没有必要购买此付费合集,后面也会在知识星球呈现,由于后面知识星球的价格会上涨,故这里的价格是低于后面的知识星球的价格的,不想要其他内容的童鞋可以直接购买此付费合集
先搞清楚几个概念:
1.形参和变量声明
以下面的test函数为例:
a,b为形参;
变量声明有:c
2.实参为test(1)中的1
function test(a, b) {
console.log(a);//1
console.log(b);//[Function: b]
console.log(c);//undefined
c = 0;
var c;
console.log(c);//0
a = 5;
console.log(a);//5
b = 6;
console.log(b);//6
function b() {
console.log("这是函数b")
};
function d() {
};
console.log(b);//6
console.log(d);//[Function: d]
}
test(1);
预编译过程:
1.创建AO活动对象(Active Object);
2.查找形参和变量声明,值赋予undefined;
3.实参值赋给形参;
4.查找函数声明,值赋予函数体;
(一般步骤1,2可以认为是一步)
test函数的整个AO过程:
1th:查找形参和变量声明,值赋予undefined:
AO = {
a: undefined,
b: undefined,
c: undefined
}
2nd:实参值赋给形参:
AO = {
a: 1,
b: undefined,
c: undefined
}
3rd:查找函数声明:
AO = {
a: 1,
b: function b() {
console.log("这是函数b")
},
c: undefined,
d: function d() {
}
}
注意点:
原文始发于微信公众号(迪哥讲事):JavaScript精髓-02预编译
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论