2011-12-29 15 views
1

私はarguments.lengthメソッドを知っていますが、これは関数が呼び出された引数の数を返します。私が代わりに必要なもの関数が定義する引数の数を調べる方法は?

は、関数が必要とする引数の数であるので、例えば

function myFunc(arg1,arg2,arg3) { 
    alert("number of passed args:" + arguments.length); 
    alert("number of required args:" + /*the code I'm asking for*/); 
}; 

myFunc('some arg'); 

だから、myFuncという()はそれを行うための1と3

任意の方法を言って2つのアラートを返すでしょうか?

答えて

3

もう1つ、arguments.caller.lengthプロパティはこの値を保持します。

function myFunc(arg1,arg2,arg3) { 
    alert("number of passed args:" + arguments.length); 
    alert("number of required args:" + arguments.caller.length); 
} 

仮パラメータの数を取得するための別の方法は、関数のlengthプロパティを使用することです。この「非推奨」について

function myFunc(arg1,arg2,arg3) { 
    alert("number of passed args:" + arguments.length); 
    alert("number of required args:" + myFunc.length); 
} 
+0

それほど単純ではありません:関数の名前は、この方法のために知られていなければならないhttp://stackoverflow.com/a/1335595/393087、彼らはそれのために名前を変更し、機能は次のようになります保存されました。 (私が漏れた英語のスキルを通して理解しているように) – rsk82

+0

@ rsk82 'arguments.callee.caller'は、関数自体ではなく、呼び出し側の関数を指しています。 –

関連する問題