作用域链
预解析的四步:
1.在函数执行前的一瞬间,会产生一个Ao(active object活动对象)对象
2.分析参数,形参作为AO对象的属性名,实参作为Ao对象的属性值
3.分析var声明,变量名作为Ao对象的属性名,值为undefined,如果遇到同名,不做任何改变
4.分析函数声明,函数名作为Ao对象的属性名,值为函数体,如果遇到同名,直接覆盖
全局作用域,对应的对象是GO(global object)。进入script标签以后,在所有代码之前会产生,产生的方式可以说跟Ao完全相同,只是少了一个参数这一步骤
1.在进入script标签,代码执行前的一瞬间,会产生一个Go对象
2.分析var声明,变量名作为Go对象的属性名,值为undefined,如果遇到同名,不做任何改变
3.分析函数声明,函数名作为Go对象的属性名,值为函数体,如果遇到同名,直接覆盖