提问一个基础变量赋值问题

var arr = [....]

var idx = 0;

Obj = window

while(idx < arr.length){

Obj = Obj[arr[idx]];//这一步是不是等于往window上添加

idx ++;

}

回答

不是。

Obj 都重新赋值了。

建议学习下引用类型和值类型的区别。

P.S. 你这代码能运行?

不是。

在window上加的话,直接酱紫

 var arr = [....]

var idx = 0;

Obj = window

while(idx < arr.length){

Obj[idx] = arr[idx]

idx++

}

var arr = [....]

var idx = 0;

Obj = window

while(idx < arr.length){

Obj = Obj[arr[idx]];//这一步是不是等于往window上添加

idx ++;

}

代码中,window本身没发生变化。
Obj = window这句,Obj指向了window对象,黑箭头。
Obj = Obj[arr[idx]]不断让Obj指向window的属性,也就是对Obj重新赋值了。原来的指向作废,绿箭头开始从一个属性指向另一个属性。
image.png

以上是 提问一个基础变量赋值问题 的全部内容, 来源链接: utcz.com/a/37106.html

回到顶部