Oggetto arguments ECMAScript

Oggetto arguments

Nel codice della funzione, gli sviluppatori utilizzano l'oggetto speciale argumentsNon è necessario specificare chiaramente il nome dei parametrie puoi accedervi.

Ad esempio, nel metodo sayHi(), il primo parametro è message. Puoi accedere a questo valore anche tramite arguments[0], ovvero il valore del primo parametro (il primo parametro si trova nella posizione 0, il secondo nella posizione 1, ecc.).

Dunque, non è necessario specificare chiaramente il nome dei parametri per riscrivere la funzione:

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

Verifica del numero di parametri

È anche possibile utilizzare l'oggetto arguments per determinare il numero di parametri della funzione, utilizzando l'attributo arguments.length.

Il seguente codice mostrerà il numero di parametri utilizzati in ogni chiamata della funzione:

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

Questo pezzo di codice mostrerà in sequenza "2", "0" e "1".

Nota:A differenza di altri linguaggi di programmazione, ECMAScript non verifica se il numero di parametri passati alla funzione è uguale al numero di parametri definiti nella funzione. Tutte le funzioni definite dallo sviluppatore possono accettare un numero arbitrario di parametri (secondo la documentazione di Netscape, fino a 255), senza generare alcun errore. Qualsiasi parametro mancante verrà passato alla funzione come undefined, e i parametri in eccesso saranno ignorati.

Simulazione surrogato di funzione

Utilizzando l'oggetto arguments è possibile determinare il numero di parametri passati alla funzione, il che consente di simulare il surrogato di funzione:

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"

Quando c'è solo un parametro, la funzione doAdd() aggiunge 5 al parametro. Se ci sono due parametri, sommerà i due parametri e restituirà la loro somma. Pertanto, doAdd(10) restituirà "15", mentre doAdd(40, 20) restituirà "60".

Non è così buono come il surrogato, ma è sufficiente per superare questo limite ECMAScript.