In diesem Artikel wird hauptsächlich die Übergabemethode von JavaScript-Funktionsparametern vorgestellt, die einen guten Referenzwert hat. Schauen wir es uns mit dem Editor an.
JavaScript verwendet ein -Variablen---Objekt , um die Lebensdauer der Variablen zu verfolgen. Basistypwerte werden direkt im Variablenobjekt gespeichert, während Referenztypwerte im Variablenobjekt als Zeiger gespeichert werden, der auf den Speicherort des tatsächlichen Objekts im Speicher zeigt.
Übergabe von Basistypwerten
Bei der Übergabe eines Basistypwerts an einen Parameter wird der übergebene Wert in eine lokale Variable (d. h. benannte Parameter oder Argumente) kopiert ein Element im Objekt).
function addOne (num) { num++; return num; } var count = 1; var result = addOne(count); console.log(count); //1 console.log(result); //2
Im obigen Beispiel wird der Wert der Variablen count an den Parameter num der Funktion zur Verwendung in der Funktion übergeben, obwohl die Werte Der Wert der Variablen count und des Parameters num sind gleich, es handelt sich jedoch um zwei unabhängige Variablen. Das Ändern des Werts des Parameters num in der Funktion hat keinen Einfluss auf den Wert der Variablen count außerhalb der Funktion.
Die grundlegenden Typwertparameter von Funktionen in JavaScript werden also als Wert übergeben.
Übertragung von Referenztypwerten
function setName (obj) { obj.name = 'Nicholas'; } var person = new Object(); setName(person); console.log(person.name); //'Nicholas'
Im obigen Beispiel wird der Wert der Variablen person an den Parameter obj der Funktion übergeben , innerhalb der Funktion ist Der Parameter obj fügt ein Namensattribut hinzu, und die Änderung des Parameters obj durch die Funktion führt dazu, dass die Variable person außerhalb der Funktion auch ein Namensattribut erhält. Aus den Ergebnissen geht hervor, dass die Referenztyp-Wertparameter von Funktionen in JavaScript als Referenz übergeben werden.
Dies ist jedoch nicht der Fall. Der Wert der Variablen person ist ein Referenztypwert, sodass sein Wert im Variablenobjekt als Adresse (oder Zeiger) eines tatsächlichen Objekts im Speicher betrachtet werden kann. Nach der Übergabe des Parameters ist der Wert des Parameters obj auch die Adresse des Objekts im Speicher. Daher entspricht das Objekt, auf das der Wert des Parameters obj in der Funktion verweist, dem Objekt, auf das der Wert der Betriebsvariablen person verweist.
function setName (obj) { obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg'; return obj; } var person = new Object(); var result = setName(person); console.log(person.name); //'Nicholas' console.log(result.name); //'Greg'
Wenn der Parameter als Referenz übergeben wird, ändert die Funktion im obigen Beispiel das Objekt, auf das durch den Wert des Parameters obj verwiesen wird, und dann ändert sich auch das Objekt, auf das durch den Wert der entsprechenden Variablen person verwiesen wird . Eine Änderung der Schreibweise der Funktion kann hilfreicher sein, um die Übergabe von Parametern nach Wert zu verstehen.
function setName () { var obj = arguments[0]; obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg'; return obj; }
Obwohl die Werte der Variablen person und des Parameters obj dieselben Objektadressen im Speicher sind, handelt es sich um zwei unabhängige Variablen. Wenn Sie den Wert des Parameters obj in der Funktion ändern, sodass er auf ein anderes Objekt im Speicher zeigt, ändert sich der Wert der Variablen person nicht und zeigt weiterhin auf das ursprüngliche Objekt.
Daher werden Referenztyp-Wertparameter von Funktionen in JavaScript als Wert übergeben.
Fazit
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Übergabe von JavaScript-Funktionsparametern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!