JS学习笔记 之 预编译


1. imply global 暗示全局变量:任何变量,未经声明就赋值,此变量为全局对象(window)所有
例:
a = 10;     -->     window.a = 10;  (不管此变量是在全局赋值的,还是局部赋值的)
 
2. 一切声明的全局变量都是window的属性     --> window即全局的
var b = 123;     -->     window.b = 123;
                        -->     window {
                                      b: 123     //在全局对象中新加了一个属性
                                     }
 
预编译发生在函数执行的前一刻
                          --> 解释一句,执行一句
函数体预编译过程:
1. 创建AO对象(Activation Object)-->    生成执行期上下文
2. 找形参和变量声明,将形参和变量声明作为AO对象的属性名,值为undefined
3. 将实参和形参值统一
4. 在函数体里找函数声明,作为GO对象的属性名,值为函数体          -->   注意:函数表达式 ≠函数声明
全局预编译过程:
1. 生成GO对象(Global Object)=== window
2. 找变量声明,作为GO对象的属性名,值为undefined
3. 找函数声明,作为GO对象的属性名,值为函数体
 
 
原文地址:https://www.cnblogs.com/seveinn/p/11801775.html