Heim >Web-Frontend >js-Tutorial >Was ist der Unterschied zwischen Pass-by-Value und Pass-by-Reference in JavaScript?

Was ist der Unterschied zwischen Pass-by-Value und Pass-by-Reference in JavaScript?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 13:49:10882Durchsuche

What's the Difference Between Pass by Value and 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!

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