提问一个基础变量赋值问题
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重新赋值了。原来的指向作废,绿箭头开始从一个属性指向另一个属性。
以上是 提问一个基础变量赋值问题 的全部内容, 来源链接: utcz.com/a/37106.html