预编译
在内存中有多少通道,通道就有多少预编译过程
js解析型语言
- 语言分析:有错误的抛出错误,没有错误,所有分析完毕
- 预编译:在内存中开辟一些空间,存放一些变量与函数对这些内存中每一个通道进行编译,所有通道就是变量和函数:预编译完成后进入第三步
- 解析执行:也就是浏览器执行代码
预编译的过程分为4个阶段
- 创建AO对象(Activition Object)(执行期上下文)
- 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
- 将实参值和形参统一
- 在函数体里面找函数声明,值赋予函数体
function fn(a) {
console.log(a);//function a(){}
var a = 123;
console.log(a);//123
function a() { };
console.log(a);//123
var b = function () { }
console.log(b);//function b(){}
function d() { };
}
fn(1);