Dieser Artikel bietet Ihnen eine detaillierte Erklärung der Argumentationsfunktion in JavaScript (mit Beispielen). Ich hoffe, dass er für Freunde hilfreich ist.
Übersicht
Funktionen in JavaScript unterscheiden sich in mehrfacher Hinsicht von anderen objektorientierten Sprachen.
Es gibt keine Funktionsüberladung
Es gibt Array-ähnliche Objektargumente
1. Funktionsüberladung
Einfach ausgedrückt erlaubt JAVA, dass mehrere Funktionen in derselben Klasse denselben Funktionsnamen, aber unterschiedliche Parameterdeklarationen haben. Dies ist eine Funktionsüberladung.
Aber JS unterstützt keine Funktionsüberladung:
function foo(num) {
console.log(num + 100)
}
function foo(num) {
console.log(num + 200)
}
foo(100); // 300
Nach dem Login kopieren
Wenn zwei Funktionen mit demselben Namen in js definiert sind, dann gehört der Name nur zu der später definierten Funktion.
2. Argumentklassenarray
Das Funktionsargumentobjekt ist eine lokale Variable, die in allen (Nicht-Pfeil-)Funktionen verfügbar ist, und ist ein Array-ähnliches Objekt. Sie können die (tatsächlichen) Parameter einer Funktion innerhalb einer Funktion mithilfe des Arguments-Objekts referenzieren.
function foo() {
console.log(arguments);
}
foo(1, "foo", false, {name: "bar"}); // [1, "foo", false, object]
Nach dem Login kopieren
function foo() {
console.log(typeof arguments);
}
foo(1, "foo", false, {name: "bar"}); // object
Nach dem Login kopieren
Argumente ist also ein Objekt im Array-Stil mit einer Längeneigenschaft und Indexelementen.
3. Attribute von Argumenten
Länge
function foo(num1, num2, num3) {
console.log(arguments)
}
foo(1); // [1]
Nach dem Login kopieren
Längenattribut stellt das Übergeben dar Geben Sie die tatsächliche Anzahl der Parameter der Funktion ein, nicht die Anzahl der formalen Parameter, als die Funktion deklariert wurde.
callee callee stellt die Funktion selbst dar, wir können uns selbst über callee in der Funktion aufrufen.
4. In echtes Array konvertieren
- Slice
Argumente-Objekt unterstützt keine anderen Array-Methoden, aber Sie können Verwenden Sie die Funktion .call, um indirekt aufzurufen.
function sayHi() {
console.log(Array.prototype.slice.call(arguments, 0))
}
sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
Nach dem Login kopieren
- spleißen
function sayHi() {
console.log(Array.prototype.splice.call(arguments, 0));
}
sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
Nach dem Login kopieren
- Array.from
function sayHi() {
console.log(Array.from(arguments));
}
sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
Nach dem Login kopieren
- Erweiterungsoperator
function sayHi(...arguments) {
console.log(arguments);
}
sayHi("hello", "你好", "bonjour") //["hello", "你好", "bonjour"]
Nach dem Login kopieren
5. Strikter Modus
Im strikten Modus und im nicht strikten Modus ist die Leistung von Argumenten unterschiedlich.
// 严格模式
function foo(a, b) {
"use strict";
console.log(a, arguments[0]);
a = 10;
console.log(a, arguments[0]);
arguments[0] = 20;
console.log(a, arguments[0]);
b = 30;
console.log(b, arguments[1])
}
foo(1);
输出:
1 1
10 1
10 20
30 undefined
// 非严格模式
function foo(a, b) {
console.log(a, arguments[0]);
a = 10;
console.log(a, arguments[0]);
arguments[0] = 20;
console.log(a, arguments[0]);
b = 30;
console.log(b, arguments[1]);
}
foo(1);
输出:
1 1
10 10
20 20
30 undefined
Nach dem Login kopieren
Im nicht strikten Modus werden die Werte der übergebenen Parameter, tatsächlichen Parameter und Argumente gemeinsam genutzt. Wenn nichts übergeben wird, werden die tatsächlichen und Argumentwerte nicht gemeinsam genutzt.
Im strikten Modus werden die Werte tatsächlicher Parameter und Argumente nicht geteilt.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Argumentfunktion in JavaScript (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!