Heim  >  Artikel  >  Web-Frontend  >  Eine detaillierte Einführung in die Übergabe von JavaScript-Parametern nach Wert

Eine detaillierte Einführung in die Übergabe von JavaScript-Parametern nach Wert

黄舟
黄舟Original
2017-05-25 09:18:191248Durchsuche

Dieser Artikel führt hauptsächlich in ein tiefgreifendes Verständnis der JavaScript-Parameterübergabe ein. Der Herausgeber findet es ziemlich gut. Jetzt werde ich es mit Ihnen teilen und es als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

Definition
Die Parameter aller Funktionen in ECMAScript werden als Wert übergeben.

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 Variable.

Wert übergeben

Ein einfaches Beispiel:

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

Die Übergabe eines Werts an die Funktion foo ist äquivalent Angenommen, die kopierte Kopie heißt _value. In der Funktion wird der Wert von _value geändert, ohne dass sich dies auf den ursprünglichen Wert auswirkt.

ReferenzPass

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.

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

Zum Beispiel:

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

Hey, das ist nicht richtig. Sogar unser Little Red Book sagt, dass die Parameter aller Funktionen in ECMAScript als Wert übergeben werden die Referenzübertragung erfolgreich?

Und ist dies eine Referenz?

Die dritte Übergabemethode

Keine Sorge, 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 die Referenzübergabe verwendet, Das Äußere Der Wert wird ebenfalls geändert. Warum wurde er 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.

Also, Gao Cheng, der dich das kleine rote Buch nennt!

Ausführliche Reihe

Die ausführliche Reihe zu JavaScript wird voraussichtlich etwa fünfzehn Artikel umfassen, die jedem dabei helfen sollen, die zugrunde liegenden Kenntnisse von JavaScript zu glätten, wobei der Schwerpunkt auf Erklären von Dingen wie Prototypen, Bereichen und Ausführungskontexten, variablen Objekten, diesem, Abschluss, Übergabe von Werten, calle, anwenden, binden, neu, geerbt und andere schwierige Konzepte.

Das obige ist der detaillierte Inhalt vonEine detaillierte Einführung in die Übergabe von JavaScript-Parametern nach Wert. 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