Frage

Wie kann man in JavaScript die Anzahl der für eine Funktion definierten formalen Parameter bestimmen?

Beachten Sie, dies ist nicht das arguments Parameter Wenn die Funktion aufgerufen wird, aber die Anzahl der benannten Argumente, mit denen die Funktion definiert wurde.

function zero() {
    // Should return 0
}

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

function two(x, y) {
    // Should return 2
}
War es hilfreich?

Lösung

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

Quelle

Eine Funktion kann ihre eigene Arität (Länge) wie folgt bestimmen:

// 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
}

Andere Tipps

Die Arity einer Funktion wird in ihrer gespeichert .length Eigentum.

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

Wie in anderen Antworten behandelt, die length Das Eigentum sagt Ihnen das. So zero.length wird 0 sein, one.length wird 1 sein und two.length wird 2 sein.

Ab ES2015 haben wir zwei Falten:

  • Funktionen können am Ende der Parameterliste einen "Ruhe" -Parameter haben, der alle Argumente an dieser Position oder danach in ein echtes Array versammelt arguments Pseudo-Array)
  • Funktionsparameter können Standardwerte haben

Der Parameter "Rest" wird bei der Bestimmung der Arität der Funktion nicht gezählt:

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

In ähnlicher Weise fügt ein Parameter mit einem Standardargument nicht zur Arity hinzu, und verhindert tatsächlich, dass andere, die ihm folgen undefined):

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

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

Eine Funktion Arity ist die Anzahl der Parameter, die die Funktion enthält. Es kann durch Aufrufen der Länge Eigenschaft erreicht werden.

Beispiel:

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

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

Hinweis: Die Anzahl der in einem Funktionsaufruf übergebenen Parameter hat keinen Einfluss auf die Arität der Funktion.

Die Arity -Eigenschaft, mit der die Anzahl der von der Funktion erwarteten Argumente zurückgegeben wurde, existiert jedoch nicht mehr und wurde durch die Funktion der Funktion.Prototype.length -Eigenschaft ersetzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top