Heim >Web-Frontend >js-Tutorial >Was ist der Unterschied zwischen Pass-by-Value und Pass-by-Reference in JavaScript?
Übergabe als Referenz vs. Wert in JavaScript
Bei der Übergabe von Daten an Funktionen in JavaScript ist es wichtig, den Unterschied zwischen der Übergabe als Referenz zu verstehen und als Wert übergeben. Diese Unterscheidung wirkt sich darauf aus, wie Daten zwischen der Funktion und dem Aufrufer geteilt und geändert werden.
Wertübergabe
Für primitive Datentypen (Strings, Zahlen, Boolesche Werte), JavaScript geht immer nach Wert. Dies bedeutet, dass eine Kopie des Grundwerts erstellt und an die Funktion übergeben wird. Alle an der Kopie innerhalb der Funktion vorgenommenen Änderungen haben keine Auswirkungen auf die Originalvariable außerhalb der Funktion.
Übergabe per Referenz
Objekte (einschließlich Arrays) werden per Referenz übergeben in JavaScript. Das bedeutet, dass die Funktion eine Referenz auf das Objekt erhält, keine Kopie. Alle Änderungen, die an den Eigenschaften des Objekts innerhalb der Funktion vorgenommen werden, wirken sich auf das ursprüngliche Objekt außerhalb der Funktion aus.
Beispiele
Betrachten Sie die folgende Funktion:
function f(a, b, c) { a = 3; b.push("foo"); c.first = false; }
Beim Aufruf mit den folgenden Argumenten:
var x = 4; var y = ["eeny", "miny", "mo"]; var z = {first: true}; f(x, y, z);
Der Wert von x bleibt unverändert, da er als Wert übergeben wird. Das ursprüngliche y-Array wird direkt über die Operation push() geändert, sodass sich sein Inhalt ändert. In ähnlicher Weise wird die erste Eigenschaft von z geändert und wirkt sich auf das Originalobjekt aus.
Unabhängige Objektkopie
Um eine völlig unabhängige Kopie eines Objekts zu erstellen, ist die Verwendung von erforderlich Eine Methode, die ein neues Objekt mit denselben Eigenschaftswerten, aber ohne Verweise auf das Original erstellt. Ein gängiger Ansatz ist die Verwendung der JSON.parse(JSON.stringify())-Technik:
var newObject = JSON.parse(JSON.stringify(originalObject));
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Pass-by-Value und Pass-by-Reference in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!