获得一个函数的arity
在Javascript中,如何确定为函数定义的forms参数的数量?
请注意,这不是函数调用时的arguments
参数,而是函数定义的命名参数的数量。
function zero() { // Should return 0 } function one(x) { // Should return 1 } function two(x, y) { // Should return 2 }
> zero.length 0 > one.length 1 > two.length 2
资源
一个函数可以像这样确定自己的长度(长度):
// 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 }
函数的参数存储在.length
属性中。
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
正如其他答案所述, length
属性告诉你。 所以zero.length
将是0, one.length
将是1,并且two.length
将是2。
从ES2015开始,我们有两个皱纹:
- 函数可以在参数列表的末尾有一个“rest”参数,它将在该位置或之后给出的任何参数集合到一个真正的数组中(与
arguments
伪数组不同) - 函数参数可以有默认值
确定函数的参数时不计算“rest”参数:
function stillOne(a, ...rest) { } console.log(stillOne.length); // 1
函数参数是函数包含的参数个数,可以通过调用length属性来获得。
例:
function add(num1,num2){} console.log(add.length); // --> 2 function add(num1,num2,num3){} console.log(add.length); // --> 3
注意:函数调用中传递的参数数量不会影响函数的参数。