JavaScript-Parameterübergabemechanismus: Nach Wert oder nach Referenz?
JavaScript wirft wie viele Programmiersprachen häufig Fragen zum Verhalten seiner Parameter auf Parameterübergabemechanismen. In diesem Fall ließ eine bestimmte Instanz aus einem beliebten JavaScript-Nachschlagewerk die Leser über die Natur der Parameterübergabe in der Sprache nachdenken.
Die Frage:
Die Verwirrung entsteht aus Ein Beispiel, bei dem ein Parameter namens my innerhalb einer Funktion undefiniert zu sein scheint, später aber neu definiert wird. Da in der Parameterliste der Funktion kein offensichtlicher Verweis vorhanden ist, fragen sich die Leser, ob JavaScript Parameter als Verweis oder als Wert übergibt. Darüber hinaus erschwert die Tatsache, dass von der inneren Funktion keine Funktion zurückgegeben wird, das Verständnis des möglichen Abschlussverhaltens zusätzlich.
Die Antwort:
Um das Parameterübergabeverhalten von JavaScript richtig zu verstehen , ist es entscheidend, zwischen primitiven Werten und Objekten zu unterscheiden.
Primitive vs Objekte:
Im bereitgestellten Beispiel ist der Parameter „my“ eine Referenz auf ein definiertes Objekt später in der Funktion. Durch die Übergabe dieser Referenz aktualisieren alle innerhalb der Funktion vorgenommenen Änderungen (z. B. das Hinzufügen der Eigenschaften l und w) das ursprüngliche Objekt. Der Versuch, die my-Referenz selbst innerhalb der Funktion neu zuzuweisen (wie im Ersetzungsbeispiel zu sehen), hat jedoch keine Auswirkungen auf die Referenz des Aufrufers.
Abschluss:
Das Beispiel tut dies zeigt kein Abschlussverhalten, da keine Funktionen von anderen verschachtelten Funktionen zurückgegeben werden. Der Abschluss würde nur erfolgen, wenn eine in einer anderen Funktion definierte Funktion zurückgegeben würde, was es ihr ermöglicht, auf Variablen aus dem umschließenden Bereich zuzugreifen, selbst nachdem die umschließende Funktion zurückgegeben wurde.
Das obige ist der detaillierte Inhalt vonWerden JavaScript-Parameter als Wert oder als Referenz übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!