ECMAScript arguments-objekt

arguments-objektet

I funktionens kod använder utvecklaren den speciella objektet argumentsDet behövs inte specificera namn på argument,kan du komma åt dem.

Till exempel, i funktionen sägaHej(), är den första parametern message. Du kan också komma åt detta värde med arguments[0], det vill säga värdet för den första parametern (den första parameteren ligger på plats 0, den andra parameteren ligger på plats 1, och så vidare).

Därför behöver du inte specificera namn på argument för att omskriva funktionen:

function sägaHej() {
  om (arguments[0] == "bye") {
    return;
  }
  alert(arguments[0]);
}

Kontrollera antalet argument

Man kan också använda arguments-objektet för att kontrollera antalet argument till funktionen, genom att hänvisa till egenskapen arguments.length.

Nedanstående kod kommer att skriva ut antalet argument som används vid varje anrop av funktionen:

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

Ovanstående kod kommer i tur och ordning att visa "2", "0" och "1".

Kommentar:Skillnaden från andra programmeringsspråk är att ECMAScript inte verifierar om antalet argument som skickas till funktionen är lika med antalet argument definierade i funktionen. Funktioner definierade av utvecklaren kan acceptera ett okänt antal argument (enligt Netscapes dokumentation, kan det vara högst 255), utan att utlösa några fel. Eventuella övergivna argument skickas till funktionen som undefined, och överflödiga argument ignoreras.

Simulera funktionsoverladdning

Använd arguments-objektet för att avgöra antalet argument som skickas till funktionen, vilket kan simulera funktionsoverladdning:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10); // skriver ut "15"
doAdd(40, 20); // skriver ut "60"

När det endast finns ett argument, lägger doAdd() funktionen 5 till argumentet. Om det finns två argument, summerar den två argumenten och returnerar summan. Så, doAdd(10) skriver ut "15", medan doAdd(40, 20) skriver ut "60".

Även om det inte är lika bra som överladdning, är det tillräckligt för att undvika denna begränsning i ECMAScript.