Heim >Web-Frontend >js-Tutorial >Warum ändern sich JavaScript-Array-Kopien, wenn sich das Original ändert?
Warum wirkt sich das Ändern eines Arrays in JavaScript auf Kopien aus?
In JavaScript sind Arrays Objekte und Variablen enthalten Verweise auf diese Objekte statt auf die Objekte selbst. Diese Vererbung kann zu unerwartetem Verhalten führen, wenn Arrays neue Werte zugewiesen werden.
Betrachten Sie das Beispiel:
// Declare an array and its copy var myArray = ['a', 'b', 'c']; var copyOfMyArray = myArray; // Modify the copy of the array copyOfMyArray.splice(0, 1); // Display the values alert(myArray); // ['b', 'c'] alert(copyOfMyArray); // ['b', 'c']
Durch die Manipulation von copyOfMyArray haben wir myArray versehentlich geändert. Dies liegt daran, dass Variablen wie myArray und copyOfMyArray auf dasselbe zugrunde liegende Array-Objekt verweisen.
Arrays vs. Zahlen
Im Gegensatz dazu, wenn mit Zahlen wie myNumber und copyOfMyNumber gearbeitet wird, Jede Variable enthält eine Kopie des Werts selbst. Das Ändern des einen hat keinen Einfluss auf das andere.
var myNumber = 5; var copyOfMyNumber = myNumber; // Decrement the copy of the number copyOfMyNumber--; // Display the values alert(myNumber); // 5 alert(copyOfMyNumber); // 4
Konsequenzen und Problemumgehungen
Das Verständnis dieses Verhaltens ist für die ordnungsgemäße Objektmanipulation von entscheidender Bedeutung. Wenn Sie wirklich eine eindeutige Kopie des Arrays benötigen, verwenden Sie die Slice-Methode, um eine flache Kopie zu erstellen:
var copyOfMyArray = myArray.slice(0);
Es ist jedoch zu beachten, dass diese flache Kopie nur die Verweise des Arrays auf seine Elemente dupliziert. Alle internen Objekte verweisen weiterhin auf dieselben Originalinstanzen.
Das obige ist der detaillierte Inhalt vonWarum ändern sich JavaScript-Array-Kopien, wenn sich das Original ändert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!