预编译
JS运行三部曲
- 语法分析
- 预编译
- 解释执行
函数声明整体提升,变量声明提升
预编译前奏
1、imply global暗示全局变量:即任何变量,如果未经声明就赋值,此变量就为全局对象所有,全局对象即为window
eg: var a = b = 1;
2、一切声明的全局变量,全是window的属性。
eg: var a = 1; ===> window.a = 1;
预编译
1、创建AO对象
2、找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
3、将室参值和形
4、在函数体里面找函数声明,值赋予函数体