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