ECMAScript arguments Object

Het arguments-object

In de functiecode gebruiken ontwikkelaars de speciale objecten argumentsEr is geen noodzaak om de parameternaam expliciet op te gevenen toegang krijgen tot hen.

Bijvoorbeeld, in de functie sayHi(), is het eerste argument message. Het kan ook met arguments[0] worden bereikt, dat wil zeggen de waarde van het eerste argument (het eerste argument bevindt zich op positie 0, het tweede argument op positie 1, enzovoort).

Daarom hoeft er geen expliciete parameternaam te worden gebruikt om de functie opnieuw te schrijven:

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

Detecteren van parameteraantal

Je kunt ook het object arguments gebruiken om het aantal parameters van de functie te detecteren, door de eigenschap arguments.length te gebruiken.

Het volgende script geeft het aantal parameters weergegeven bij elke aanroep van de functie weer:

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

Het bovenstaande script toont in volgorde "2", "0" en "1".

Opmerking:anders dan andere programmeertalen valt ECMAScript niet uit het oog of het aantal parameters doorgegeven aan de functie gelijk is aan het aantal parameters zoals gedefinieerd in de functie. Alle door ontwikkelaars gedefinieerde functies kunnen een willekeurig aantal parameters aanvaarden (volgens de documentatie van Netscape, maximaal 255), zonder enige fout te veroorzaken. Alle ontbrekende parameters worden doorgegeven als undefined aan de functie, en extra parameters worden genegeerd.

Simuleren van functie-overloading

Gebruik het object arguments om het aantal parameters doorgegeven aan de functie te bepalen, zodat je functieoverloading kunt simuleren:

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

Als er maar één parameter is, voegt de functie doAdd() 5 toe aan de parameter. Als er twee parameters zijn, worden de twee parameters opgeteld en wordt het som van de parameters geretourneerd. Dus, doAdd(10) geeft "15" terug, terwijl doAdd(40, 20) "60" teruggeeft.

Hoewel het niet zo goed is als overloading, is het voldoende om deze beperkingen van ECMAScript te omzeilen.