ECMAScript-arguments-Objekt

arguments-Objekt

Im Funktionscode verwenden Entwickler den speziellen Objekt argumentsEs ist nicht erforderlich, die Namen der Parameter explizit anzugebenkönnen sie darauf zugreifen.

Zum Beispiel ist der erste Parameter in der Funktion sayHi() message. Dieser Wert kann auch über arguments[0] erreicht werden, d.h. der Wert des ersten Parameters (der erste Parameter befindet sich an Position 0, der zweite Parameter an Position 1 und so weiter).

Daher ist es nicht erforderlich, die Parameter explizit zu benennen, um die Funktion zu überschreiben:

function sayHi() {
  if (arguments[0] == "bye") {
    return;
  
  alert(arguments[0]);

Überprüfung der Parameteranzahl

Man kann auch das Objekt arguments verwenden, um die Anzahl der Parameter einer Funktion zu überprüfen, indem man auf das Attribut arguments.length verweist.

Das folgende Code-Snippet gibt die Anzahl der Parameter an, die bei jeder Aufruf der Funktion verwendet werden:

function howManyArgs() {
  alert(arguments.length);

howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

Das obige Code-Snippet zeigt in der Reihenfolge "2", "0" und "1" an.

Anmerkung:Im Gegensatz zu anderen Programmiersprachen überprüft ECMAScript nicht, ob die Anzahl der übergebenen Parameter der Anzahl der in der Funktion definierten Parameter entspricht. Alle von Entwicklern definierten Funktionen können eine beliebige Anzahl von Parametern akzeptieren (nach den Dokumenten von Netscape bis zu 255), ohne Fehler auszulösen. Jegliche fehlenden Parameter werden als undefined an die Funktion weitergegeben, und überschüssige Parameter werden ignoriert.

Simulierung der Funktionsumladung

Um die Anzahl der übergebenen Parameter einer Funktion zu bestimmen, kann das Objekt arguments verwendet werden, um das Verhalten einer Funktionsumladung zu simulieren:

function doAdd() {
  
    alert(arguments[0] + 5);
  
    alert(arguments[0] + arguments[1]);
  

doAdd(10); // Ausgabe "15"
doAdd(40, 20); // Ausgabe "60"

Wenn nur ein Parameter vorhanden ist, gibt die Funktion doAdd() dem Parameter 5 hinzu. Wenn zwei Parameter vorhanden sind, werden diese addiert und deren Summe zurückgegeben. Daher gibt doAdd(10) "15" aus und doAdd(40, 20) gibt "60" aus.

Obwohl es nicht so gut wie das Überschreiben ist, ist es ausreichend, um diese Beschränkung von ECMAScript zu umgehen.