预编译发生在函数执行的前一刻函数
预编译(全局)spa
三部曲:对象
①、生成GO对象 (Global Object) // GO === window作用域
GO{io
}编译
②、找形参和变量声明,将变量和形参名做为GO属性名,值为undefined变量
③、在函数体里面找函数声明,值——赋予函数体im
预编译(局部)co
四部曲:生成
①、生成AO对象 (Activation Object 执行期上下文)“做用域”
AO{
}
②、找形参和变量声明,将变量和形参名做为AO属性名,值为undefined
③、将实参值和形参统一
④、在函数体里面找函数声明,值——赋予函数体
1、imply global 暗示全局变量:即任何变量,若是变量未经声明就赋值,此变量就为全局对象全部。
2、一切声明的全局变量,都归window全部
3、window就是全局
4、①函数声明总体提高到逻辑最前面
②变量声明提高到逻辑最前面
JS三部曲
一、依法分析
二、预编译
三、解释执行