我们知道JavaScript是一种解释性语言,那它运行的三大部分为:
一、语法分析(系统会把整篇代码扫描一下,看看有没有低级语法错误)
二、预编译
三、解释执行
我也是刚刚学的js,我想分享一下学到的东西,一起交流进步。
那么预编译的过程是怎么样的呢?
让我们一起来看下面的例子:
function f(a){
console.log(a); //function a(){}
console.log(b); //undefined
var a = 10;
console.log(a); //10
var b = 20;
console.log(b); //20
function a(){}
console.log(a); //10
}
f(1);
首先,它会创建一个AO对象(activation object)。
AO{}
然后,找形参和变量声明,将变量和形参作为AO对象的属性名,值匀为undefined。
AO{
a = undefined,
b = undefined,
}
完了之后,将实参和形参相统一。
AO{
a = 1,
b = undefined,
}
最后,在函数体找函数声明,值为自己的函数体。
AO{
a = function a(){},
b = undefined,
}
预编译完了之后就可以解释执行了。
总结
1.创建AO对象
2.找形参和变量声明,将变量和形参作为AO对象的属性名,值为undefined。
3.将实参和形参相统一。
4.在函数体里找函数声明,值为函数体。