1.暗示全局变量
function test(){
var a=b=1;
}
test();
console.log(a);//报错
console.log(window.a);//undefined
console.log(b);//1
未声明直接赋值的变量默认为全局变量,作为window的属性
2. GO global object 全局上下文
- 找变量
- 找函数声明
- 执行
var a =1;
function a(){
console.log(2);
}
console.log(a);//1
//a:undefined->function a(){} -> 1;
// GO===window
3.AO activation object
活跃对象,函数上下文
1. 寻找形参和变量声明-> 2. 将实参赋值给形参 -> 3. 寻找函数声明,赋值 -> 4. 执行
function test(a){
console.log(a);
var a = 1;
console.log(a);
function a(){}
console.log(a);
var b = function(){}
console.log(b);
function d(){}
}
test(2);
//a:undefined -> 2 -> a() -> 1
//寻找形参和变量声明-> 将实参赋值给形参 -> 寻找函数声明,赋值 -> 执行
//a()
//1
//1
//b()