在JavaScript中,运行其实分为了三步:
js运行三步曲:
1.语法分析
2.预编译
3.解释执行
预编译分为全局预编译和局部预编译,全局预编译发生在页面加载完成时执行,而局部预编译发生在函数执行的前一刻。
预编译步骤
首先JavaScript的执行过程会先扫描一下整体语法语句,如果存在逻辑错误或者语法错误,那么直接报错,程序停止执行,没有错误的话,开始从上到下解释一行执行一行。
全局预编译的3个步骤:
1. 创建GO(Global Object)对象;
2. 寻找变量声明作为GO的属性名,并赋值为undefined;
3. 寻找函数声明,放入作为GO的属性,并赋值为其函数体。
局部预编译的4个步骤:
局部预编译的4个步骤:
1.创建AO对象(Activation Object)执行期上下文。
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3.将实参值和形参统一。
4.在函数体里面找函数声明,值赋予函数体。
举个栗子:
console.log(a);
var b = 2;
console.log(b);
a(