预编译
##预编译之前需要了解
- 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有
- 一切声明的全局变量,全是window的属性
window属性就是GO GO里面包含的东西 全在window属性里
预编译四步
- 创建AO对象
- 找行参和变量声明,将变量和行参名作为AO属性名,值为undefined
- 将实参和行参统一
- 在函数体里面找到函数声明,值赋予函数体
实例
实例一
function text(){
console.log(b); //undefined
if(a){
var b =100;
}
c=234;
console.log(c); //234
}
var a ;
text();
a =10;
console.log(c);
console.log(a);
AO对象:
AO{
b : undefined;
}
GO对象:
GO{
c: undefined;
a: 10;
}
实例二
function fn(a){
console.log(a);
var a =123;
console.log(a);
function a(){}
console.log(a);
var b = function(){}
console.log(b);
function d (){}
console.log(d);
}
fn(1);
console.log(fn);
AO对象:
AO{
a : function a(){};
b :function (){};
d : function d(){}
}
GO对象:
GO{
fn:function fn(){};
}