关于什么样的变量归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

posted on 2018-09-22 19:30  随想***  阅读(245)  评论(0编辑  收藏  举报