2013-08-24 8 views
8

Ich möchte Callback-Funktion vor dem Akzeptieren zu bewerten. Das bedeutet, dass ich mindestens die Anzahl der akzeptierten Argumente wissen muss - wenn die Anzahl nicht übereinstimmt, hinterlasse ich eine Warnung in der Konsole. Aber ich kann nicht herausfinden, ob ein JavaScript-Funktionsobjekt eine Eigenschaft hat, die mir helfen würde, diese Informationen zu bekommen.
So kann dies erreicht werden ohne Parsing-Funktion als String (nicht wert)?Get Argument Anzahl (oder sogar Namen) von JavaScript-Funktion Objekt

Antwort

18

Eine Funktion hat a length property, die Ihnen sagt, wie viele genannten Argumente akzeptiert. Beachten Sie jedoch, dass eine Funktion die Variable arguments für den Zugriff auf Variablen verwenden kann, auch wenn sie diese nicht benennt. length ist dafür nicht geeignet (und es gibt auch keine Alternative).

function foo(a, b) { 
    for (var i=0;i<arguments.length;i++) { 
     console.log(arguments[i]); 
    } 
} 

console.log(foo.length); // reports 2, even though `foo` can access all your arguments! 
+0

danken. Gibt es eine vollständige Spezifikation der Eigenschaften und Methoden von Funktionsobjekten? Ich habe keinen gefunden. –

+0

@Tomas: der Link in meiner Antwort sollte dies bereitstellen. – Matt

-3

Hier kürzere Version ist man var a = function() {return [... Argumente] .length}