Heim > Web-Frontend > js-Tutorial > Hauptteil

Übergeben Sie Parameter nach Wert in der JS-Funktion

小云云
Freigeben: 2018-01-18 14:43:05
Original
1809 Leute haben es durchsucht

Dieser Artikel zeigt Ihnen hauptsächlich ein Beispiel für die Übergabe von Parametern in einer js-Funktion. Ich hoffe, dass er dem Editor hilft allen helfen.

JS-Funktionsparameter werden als Wert übergeben. Unter normalen Umständen hat eine Änderung des Werts des Funktionsparameters keine Auswirkungen auf die Variablen außerhalb der Funktion. Zum Beispiel:

'use strict';
var list = [1, 2, 3];
list.forEach(function(item) {
 item ++;
});
console.log(list); // [ 1, 2, 3 ]
Nach dem Login kopieren

Dies liegt daran, dass eine js-Funktion beim Empfang eines Parameters eine Kopiervariable generiert, die dem Wert des Parameters entspricht. Sie können die Ausführung von js wie folgt analysieren:

'use strict';
var list = [1, 2, 3];
list.forEach(function(item, i) {
 // 第一个item是副本,第二个item是数组元素list[i]
 var item = item;
 // 副本item++
 item ++;
 // 打印的是副本的值
 console.log(item); // 2, 3, 4
});
// 原数组不会改变
console.log(list); // [ 1, 2, 3 ]
Nach dem Login kopieren

Aber was ist, wenn dem Funktionsparameter ein Objekt übergeben wird?

'use strict';var list = [{a: 1, b: 2}];
list.forEach(function(item) {
 item.a ++;
});
console.log(list); // [ { a: 2, b: 2 } ]
Nach dem Login kopieren

Ich habe festgestellt, dass der Wert der externen Variablen der Funktion tatsächlich innerhalb der Funktion geändert wurde. Warum ist das so?

Lassen Sie uns analysieren, wie js diesen Code ausführt

'use strict';
var list = [{a: 1, b: 2}];
list.forEach(function(item, i) {
 // 第一个item是副本,第二个item是数组元素list[i]
 var item = item;
 // 此时item和list[i]指向的是同一地址,故两者完全一样
 console.log(item === list[i]); // true
 // 此时item.a++ 亦即 list[i].a++
 item.a ++;
 // list[i]的值已经改变
 console.log(list[i]); // { a: 2, b: 2 }
});
console.log(list); // [ { a: 2, b: 2 } ]
Nach dem Login kopieren

Warum passiert das?

Da Objekte in js Referenztypen sind, entspricht var item = item der Zuweisung der Adresse von list[i] zu item. Beide verweisen auf die Adresse des ursprünglichen Objekts, also durch Wenn man a ändert Wert, ändert es tatsächlich das Objekt, auf das sie zeigen. Im Beispiel wird der Wert des ursprünglichen Objekts durch die Methode item.a++ geändert, sodass am Ende [ { a: 2, b: 2 } ] ausgegeben werden sollte.

Verwandte Empfehlungen:

So übergeben Sie Parameter bei Seitensprüngen in HTML

PHP-Referenzdefinition und Beispiele für Referenzübergabeparameter Detaillierte Erläuterung der Verwendung

Detaillierte Erläuterung der grundlegenden Syntax der PHP-Funktion und Anwendungsbeispiele für die Übergabe von Parametern

Das obige ist der detaillierte Inhalt vonÜbergeben Sie Parameter nach Wert in der JS-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage