tips:
1.如果变量未经声明就赋值,此变量就为全局变量所有。
function test(){
var a = b = 123; //因为这里变量b没有声明
}
test();
console.log(window.a) //undefined
console.log(b) //123
2.一切声明的全局变量,全是window的属性。
var a = 123 ===> window.a = 123
预编译四部曲:
1. 创建AO对象。
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined。
3.将实参值和形参统一。
4.在函数体里面找函数声明,值赋予函数体。
例1:
//预编译发生在函数执行的前一刻
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(){}
}
fn(1);
第一步创建AO对象:
AO{