ECMAScript arguments objekt

arguments-objektet

I funktionens kode bruger udviklere den specielle objekt argumentsDer er ingen behov for at nævne parameternavne klartman kan få adgang til dem.

For eksempel er den første parameter i funktionen sayHi() message. Man kan også få adgang til denne værdi ved at bruge arguments[0], hvilket er værdien af den første parameter (den første parameter er placeret på position 0, den anden parameter på position 1, og så videre).

Derfor er der ingen behov for at navngive parametrene klart, når funktionen skal ændres:

function sigerHej() {
  hvis (arguments[0] == "bye") {
    return;
  }
  alert(arguments[0]);
}

Kontroller antal parametre

Man kan også bruge arguments-objektet til at kontrollere antallet af parametre for en funktion, ved at referere til egenskaben arguments.length.

Følgende kode vil outputte antallet af parametre, der bruges ved hver funktionkald:

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

Koden viser "2", "0" og "1" i rækkefølge.

Bemærk:Forskellige fra andre programmeringssprog, validerer ECMAScript ikke, om antallet af parametre, der sendes til funktionen, er lig med antallet af parametre defineret i funktionens definition. Funksjoner defineret af udviklere kan acceptere et hvilket som helst antal parametre (ifølge Netscapes dokumentation, op til 255), uden at udløse nogen fejl. Eventuelle manglende parametre vil blive sendt til funktionen som undefined, og overskydende parametre vil blive ignoreret.

Simuler funktionsoverloading

Brug arguments-objektet til at afgøre antallet af parametre, der sendes til funktionen, og du kan efterligne funktionsoverloading:

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

Når der kun er én parameter, tilføjer doAdd() funktionen 5 til parameteren. Hvis der er to parametre, vil funktionen lægge to parametre sammen og returnere deres sum. Derfor outputter doAdd(10) "15", mens doAdd(40, 20) outputter "60".

Selvom det ikke er så godt som overloading, er det dog nok til at undgå denne begrænsning i ECMAScript.