Das Objekt viajavascript arguments wird hauptsächlich im Abschnitt über JavaScript-Funktionen erlernt.
3: Argumentobjekt
Tatsächlich kann der Funktionskörper die übergebenen Parameter über das Argumentobjekt empfangen.
function box(){
return arguments[0] + '|'+arguments[1]; //得到每次参数的值
}
alert(box('caibaojian',24));
Nach dem Login kopieren
Das Längenattribut des Argumentobjekts kann die Anzahl der Parameter abrufen.
function box(){
return arguments.length;
}
alert(box(1,2,3,4,5)); 5
Nach dem Login kopieren
Heute werde ich hauptsächlich über den Verwendungsprozess sprechen. Ich werde ein Beispiel verwenden, um den Unterschied zwischen dem Zugriff des Argumentobjekts auf die Parameter der Funktion und dem Zeitpunkt, an dem der Zeilenparameter die Parameter definiert, zu veranschaulichen 🎜>
//code from http://caibaojian.com/js-arguments.html
function func(a,b){
b=30;
arguments[0] = arguments[1]
return a;
}
function(1,2); 30
function(1); undefined //由于函数内arguments形参改变了,a=arguments[1],arguments[1]未定义,所以a最后输出undefined
Nach dem Login kopieren
Originallink: http://caibaojian.com/js-arguments.html
über Erkennungsparameternummer Originaltext von: http://caibaojian.com/js -arguments.html
Sie können das Arguments-Objekt auch verwenden, um die Anzahl der Parameter der Funktion zu ermitteln, indem Sie einfach auf das Attribut arguments.length verweisen.
Der folgende Code gibt die Anzahl der in jedem Funktionsaufruf verwendeten Parameter aus:
function howManyArgs() {
alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);
Nach dem Login kopieren
über den obigen Code werden nacheinander „2“, „0“ und „1“ angezeigt.
Hinweis: Im Gegensatz zu anderen Programmiersprachen überprüft ECMAScript nicht, ob die Anzahl der an eine Funktion übergebenen Parameter gleich der Anzahl der von der Funktion definierten Parameter ist. Vom Entwickler definierte Funktionen können eine beliebige Anzahl von Argumenten akzeptieren (laut Netscape-Dokumentation bis zu 255), ohne Fehler auszulösen. Alle fehlenden Argumente werden als undefiniert an die Funktion übergeben und zusätzliche Funktionen werden ignoriert.
Funktionsüberladung simulieren
Verwenden Sie das Argumentobjekt, um die Anzahl der Parameter zu bestimmen, die an die Funktion übergeben werden, um eine Funktionsüberladung zu simulieren:
function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 5);
} else if(arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}
doAdd(10); //输出 "15"
doAdd(40, 20); //输出 "60"
Nach dem Login kopieren
via, wenn nur ein Parameter vorhanden ist , fügt die Funktion doAdd() dem Parameter 5 hinzu. Wenn zwei Parameter vorhanden sind, werden die beiden Parameter addiert und ihre Summe zurückgegeben. DoAdd(10) gibt also „15“ aus, während doAdd(40, 20) „60“ ausgibt. Originaltext von: http://caibaojian.com/js-arguments.html
Obwohl es nicht so gut ist wie eine Überladung, reicht es aus, diese Einschränkung von ECMAScript zu vermeiden.