2011-12-29 38 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

任何方式做到這一點?

回答

3

另外,他已棄用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 2011-12-29 21:49:28

+0

@ rsk82'arguments.callee.caller'指向調用函數,而不是函數本身。 – 2011-12-29 21:53:43