我想知道为什么如果我在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->实例A
  copyOfArray->实例A


创建第二个数组将创建一个新实例,而前两个则指向旧实例:

var secondArray = ["2","3","4"];



  array->实例A
  copyOfArray->实例A
  secondArray->实例B


现在在做
    数组= secondArray;

array指向的引用更新为secondArray指向的引用,这样您将拥有


  array->实例B
  copyOfArray->实例A
  secondArray->实例B


当您指向secondArray指向的引用而不是secondArray本身时,这很有意义

08-25 22:29