Heim >Web-Frontend >js-Tutorial >Pass-by-Reference vs. Pass-by-Value in JavaScript: Wie verhalten sich Objekte und Primitive in Funktionsaufrufen?

Pass-by-Reference vs. Pass-by-Value in JavaScript: Wie verhalten sich Objekte und Primitive in Funktionsaufrufen?

DDD
DDDOriginal
2024-12-20 21:44:09110Durchsuche

Pass-by-Reference vs. Pass-by-Value in JavaScript: How Do Objects and Primitives Behave in Function Calls?

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!

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