Heim >Web-Frontend >js-Tutorial >Ausführliche Erläuterung der JavaScript-Parameterübergabe als Wert und Anwendungsbeispiele für die Referenzübergabe

Ausführliche Erläuterung der JavaScript-Parameterübergabe als Wert und Anwendungsbeispiele für die Referenzübergabe

伊谢尔伦
伊谢尔伦Original
2017-07-26 17:09:221272Durchsuche

Was ist eine Wertübergabe?

Mit anderen Worten: Das Kopieren des Werts außerhalb der Funktion in den Parameter innerhalb der Funktion ist dasselbe wie das Kopieren des Werts von einer Variablen in eine andere.

Pass-by-Wert

Ein einfaches Beispiel:


var value = 1;
function foo(v) {
  v = 2;
  console.log(v); //2
}
foo(value);
console.log(value) // 1

Es ist beim Passen leicht zu verstehen value in die Funktion foo entspricht dem Kopieren einer Kopie von value. Angenommen, die Kopie heißt _value. In der Funktion wird der Wert von _value geändert, ohne dass sich dies auf den ursprünglichen Wert auswirkt.

Übergabe als Referenz

Das Kopieren ist leicht zu verstehen, aber wenn der Wert eine komplexe Datenstruktur ist, führt das Kopieren zu Leistungsproblemen.

Es gibt also eine andere Art der Übergabe, die Übergabe per Referenz genannt wird.

Die sogenannte Referenzübergabe bedeutet, dass die Referenz des Objekts übergeben wird. Alle Änderungen an den Parametern innerhalb der Funktion wirken sich auf den Wert des Objekts aus, da beide auf dasselbe Objekt verweisen.

Zum Beispiel:


var obj = {
  value: 1
};
function foo(o) {
  o.value = 2;
  console.log(o.value); //2
}
foo(obj);
console.log(obj.value) // 2

Ist das eine Weitergabe als Referenz?

Die dritte Versandmethode

Keine Eile, schauen wir uns ein anderes Beispiel an:


var obj = {
  value: 1
};
function foo(o) {
  o = 2;
  console.log(o); //2
}
foo(obj);
console.log(obj.value) // 1

Wenn JavaScript Pass-by-Reference verwendet, wird auch der äußere Wert geändert. Warum wurde dies nicht geändert? Ist es also wirklich keine Referenzübergabe?

Hier geht es darum zu erwähnen, dass es tatsächlich eine dritte Liefermethode gibt, die Shared Delivery genannt wird.

Gemeinsame Übertragung bedeutet, dass bei der Übertragung eines Objekts eine Kopie der Referenz des Objekts übertragen wird.

Hinweis: Bei der Übergabe durch Referenz wird eine Referenz auf das Objekt übergeben, während bei der Übergabe durch Teilen eine Kopie der Referenz des Objekts übergeben wird!

Wenn Sie also o.value ändern, können Sie den ursprünglichen Wert durch Referenz finden, aber wenn Sie o direkt ändern, wird der ursprüngliche Wert nicht geändert. Das zweite und dritte Beispiel werden also tatsächlich durch Teilen weitergegeben.

Schließlich können Sie es so verstehen:

Wenn der Parameter ein Basistyp ist, wird er als Wert übergeben, wenn es sich um einen Referenztyp handelt, wird er durch Teilen übergeben.

Da die Kopie aber auch eine Kopie des Werts ist, wird sie auch direkt als vom Wert in der Höhe übergeben betrachtet.

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der JavaScript-Parameterübergabe als Wert und Anwendungsbeispiele für die Referenzübergabe. 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