关于什么样的变量归window所有
对于什么样的变量归window所有,两句话:
全局变量归window所有
未经声明便使用的变量归window所有
例子:
1.
function Foo() {
a = 6;
console.log(a); //6 虽说a不在Foo的AO里,但ao里没有a,foo会向他父级索取
console.log(window.a);//6 a未经声明便赋值归window所有
}
Foo();
2.
function Foo() {
i=0;
var i=9;
console.log(i); //9
console.log(window.i);//undefined
}
Foo();
咋一看,window.i不是应该输出0吗,i=0呀,未经声明归window所有。但要怪就怪函数体里面有个var i 吧。
原因:
函数在执行时(Foo()),会建立一个活动对象,里面有一些属性。
{
形参:值
var 声明的变量:值
函数声明: 值
}
这个ao一开始的时候属性挂的值都是undefined,后来随着函数的执行,这些属性上也开始挂值。
争对本题:
开始:ao{i:undefined} --->ao{i:0}---->ao{i:9}--->console.log(i)//9
这样看i并没有挂到window上,当然如果函数里面没有i的声明,这个i便属于window