1.语法分析
1.分析有无语法错误

2.预编译(发生在函数执行之前)
1.创建AO对象(之前创建GO对象)
2.找形参和变量声明,将变量和形参名作为AO属性名,值为underfind
3.将实参值和形参统一
4.在函数体里找函数声明,值赋值函数体
5.AO里面没有的话,可以到GO全局对象上找到对应的值
3.解释执行
1.一句一句代码解释执行

ex:
function test(a,b){
console.log(a);
console.lgo(b);
var b = 234;
console.log(b);
a = 123;
console.log(a);
function a() {}
var a;
b = 234;
var b = function (){}
console.log(a);
console.log(b);
}
1.创建AO对象
2.找到形参和变量声明的名称,作为AO对象的属性名,值为underfind。
3.将实参值和形参统一
4.在函数体里找函数声明,值赋值函数体。
5.最后解释执行
链接:https://www.jianshu.com/p/1f6701b9b79b
这里写的比较详细,函数预编译的过程