JavaScript: 通过另一个引用变量访问时无法通过重新分配清除数组

JavaScript: Can't clear array through reassignment when accessing through another reference variable

我找到了解决方法 - 需要直接访问原始数组变量,但我想了解为什么会这样。

var array = ["hello"];

var testObject = {arr: array};

testObject.arr = [];

console.log(array) results in ["hello"] and not [] as expected.

但是,这个方法确实清除了数组

while (testObject.arr.length > 0) {

   testObject.arr.splice(0, 1);

}

console.log(array) results in [] as expected.

谁能解释一下这是怎么回事?谢谢!

哦,另外,如果我 testObject.arr.push("testing"),它会按预期工作....

我只是不明白为什么尝试重新分配数组会失败。

testObject.arr = []testObjectarr 属性 - 设置为一个全新的数组。它不会对先前分配给 属性 的值做任何事情。它正在变异 testObject.

然而,

testObject.arr.splice 会在 属性 处改变数组