我想知道为什么如果我在JS中运行它,它将在更改值后创建对数组的新引用:
var array = ["1","2","3"];
var copyOfArray = array;
console.log(copyOfArray); // ["1", "2", "3"]
var secondArray = ["2","3","4"];
array = secondArray;
console.log(array); //["2","3","4"]
console.log(copyOfArray); //["1", "2", "3"]
为什么对数组的引用未更新?
最佳答案
当您这样做时:
var array = ["1","2","3"];
var copyOfArray = array;
这将创建一个数组并使
copyOfArray
指向同一实例array
->实例AcopyOfArray
->实例A创建第二个数组将创建一个新实例,而前两个则指向旧实例:
var secondArray = ["2","3","4"];
array
->实例AcopyOfArray
->实例AsecondArray
->实例B现在在做
数组= secondArray;
将
array
指向的引用更新为secondArray
指向的引用,这样您将拥有array
->实例BcopyOfArray
->实例AsecondArray
->实例B当您指向
secondArray
指向的引用而不是secondArray
本身时,这很有意义