Heim >Web-Frontend >js-Tutorial >Warum ändern sich JavaScript-Array-Kopien, wenn sich das Original ändert?

Warum ändern sich JavaScript-Array-Kopien, wenn sich das Original ändert?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-18 21:31:14263Durchsuche

Why Do JavaScript Array Copies Change When the Original Changes?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn