js运行三部曲:
- 语法检测(通篇扫描,查看是否有语法错误)
- 词法分析(预编译)
- 解释执行
全局预编译过程
- 创建GO(window)对象(Global Object -- 全局执行期上下文)
- 找变量的声明,将形参和变量名作为AO属性名,值为undefined
- 找函数声明,值赋予函数体。
- 注:如果遇到同名的变量会覆盖
函数预编译过程(预编译发生在函数执行之前)
- 创建AO对象(Activation Object -- 函数执行期上下文)
- 找形参和变量的声明,将形参和变量名作为AO属性名,值为undefined
- 将实参值和形参统一。
- 在函数体里面找函数声明,值赋予函数体。
- 注:如果遇到同名的变量会覆盖