Domanda

In JavaScript, come si può determinare il numero di parametri formali definiti per una funzione?

Nota, questo non è il arguments parametro quando viene chiamata la funzione, ma il numero di argomenti nominati con cui è stata definita la funzione.

function zero() {
    // Should return 0
}

function one(x) {
    // Should return 1
}

function two(x, y) {
    // Should return 2
}
È stato utile?

Soluzione

> zero.length
0
> one.length
1
> two.length
2

Fonte

Una funzione può determinare la propria arity (lunghezza) in questo modo:

// For IE, and ES5 strict mode (named function)
function foo(x, y, z) {
    return foo.length; // Will return 3
}

// Otherwise
function bar(x, y) {
    return arguments.callee.length; // Will return 2
}

Altri suggerimenti

L'aria di una funzione è memorizzata nel suo .length proprietà.

function zero() {
    return arguments.callee.length;
}

function one(x) {
    return arguments.callee.length;
}

function two(x, y) {
    return arguments.callee.length;
}

> console.log("zero="+zero() + " one="+one() + " two="+two())
zero=0 one=1 two=2

Come è trattato in altre risposte, il length La proprietà te lo dice. Così zero.length sarà 0, one.length sarà 1, e two.length sarà 2.

A partire da ES2015, abbiamo due rughe:

  • Le funzioni possono avere un parametro "riposo" alla fine dell'elenco dei parametri che raccoglie qualsiasi argomento fornito in quella posizione o successivamente in un vero array (a differenza del arguments pseudo-array)
  • I parametri della funzione possono avere valori predefiniti

Il parametro "REST" non viene conteggiato quando si determina l'arity della funzione:

function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1

Allo stesso modo, un parametro con un argomento predefinito non si aggiunge a Arity, e in effetti impedisce a tutti gli altri di seguirlo di aggiungerlo anche se non hanno impostazioni predefinite esplicite (si presume abbiano un default silenzioso di undefined):

function oneAgain(a, b = 42) { }
console.log(oneAgain.length);    // 1

function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1

Una funzione Arity è il numero di parametri che la funzione contiene. È possibile raggiungere chiamando la proprietà di lunghezza.

Esempio:

function add(num1,num2){}
console.log(add.length); // --> 2

function add(num1,num2,num3){}
console.log(add.length); // --> 3

Nota: il numero di parametri passati in una chiamata di funzione non influisce sull'aria della funzione.

La proprietà Arity utilizzata per restituire il numero di argomenti previsti dalla funzione, tuttavia non esiste più ed è stata sostituita dalla proprietà Function.Prototype.Length.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top