【发布时间】:2012-08-03 23:19:03
【问题描述】:
我知道这行得通,但我不知道为什么或为什么它会以这种方式工作:
var foo = [5, 10];
var bar = foo;
console.log(foo); //[5, 10]
console.log(bar); //[5, 10]
bar[0] = 1;
console.log(foo); //[1, 10]
bar = null;
console.log(foo); //[1, 10]
我不仅希望bar 变为空,而且还希望foo 变为空。我希望得到一些帮助来理解这一点。
【问题讨论】:
-
你为什么会这样?
-
因为
bar是对对象的引用(“指针”),而不是实际的对象本身。 -
但是就像我演示的那样,指向对象属性的指针会影响值本身,这就是我的困惑所在。
-
@Bloodyaugust:你应该看看rebinding and mutating 操作之间的区别。
bar[0] = 1正在变异;它会影响bar指向的对象。bar = None正在重新绑定;它只会影响标识符bar的含义。 -
@DavidRobinson:你为什么不把它放在一个答案中?它回答了我问题的第一部分,谢谢!
标签: javascript types reference null