Heim >Web-Frontend >js-Tutorial >Pass-by-Reference vs. Pass-by-Value in JavaScript: Wie verhalten sich Objekte und Primitive in Funktionsaufrufen?
JavaScript-Pass-by-Referenz vs. Pass-by-Wert
JavaScript verwendet sowohl Pass-by-Value- als auch Pass-by-Reference-Mechanismen . Grundelemente wie Zahlen und Zeichenfolgen werden als Wert übergeben, was bedeutet, dass in der aufgerufenen Funktion eine Kopie des Grundelements erstellt wird. Im Gegensatz dazu werden Nicht-Primitive, vor allem Objekte, per Referenz übergeben.
Bei Objekten wird eine Referenz auf das Objekt und nicht eine Kopie übergeben. Dies bedeutet, dass das Ändern der Referenzvariable in der aufgerufenen Funktion keinen Einfluss auf die Referenz im Aufrufer hat, wie im bereitgestellten Beispiel gezeigt:
var a = { key: 'value' }; replace(a); // a still holds its original value update(a); // a's contents change
Verwechslung mit der Rechteckfunktion
Das Beispiel in der Frage enthält ein verschachteltes Funktionsrechteck mit dem Parameter my. Dieser Parameter ist zunächst undefiniert, wird aber innerhalb der Funktion definiert. Der Grund für diese Einrichtung besteht darin, eine Möglichkeit zum Datenaustausch zwischen der Rechteckfunktion und ihrer Innenbereichsfunktion bereitzustellen.
Während der my-Parameter zunächst nicht in der Rechteckfunktion definiert ist, handelt es sich um eine Objektreferenz, die als Referenz übergeben wird . Wenn es also innerhalb der Rechteckfunktion zugewiesen wird, erstellt es einen neuen Verweis auf ein Objekt, das sowohl innerhalb der Rechteck- als auch der Flächenfunktion geändert werden kann, auch wenn die Flächenfunktion den Parameter „my“ nicht direkt empfängt.
Das obige ist der detaillierte Inhalt vonPass-by-Reference vs. Pass-by-Value in JavaScript: Wie verhalten sich Objekte und Primitive in Funktionsaufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!