在 Javascript 中,如何确定为函数定义的形式参数的数量?
请注意,这不是arguments
调用函数时的参数,而是定义函数时使用的命名参数的数量。
function zero() {
// Should return 0
}
function one(x) {
// Should return 1
}
function two(x, y) {
// Should return 2
}
在 Javascript 中,如何确定为函数定义的形式参数的数量?
请注意,这不是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 开始,我们有两个问题:
arguments
伪数组不同)确定函数的元数时不计算“rest”参数:
function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1
类似地,带有默认参数的参数不会添加到 arity,并且实际上会阻止任何其他跟随它的人添加到它,即使他们没有显式默认值(假设它们具有无提示默认值undefined
):
function oneAgain(a, b = 42) { }
console.log(oneAgain.length); // 1
function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1
函数元数是函数包含的参数数量。它可以通过调用长度属性来获得。
例子:
function add(num1,num2){}
console.log(add.length); // --> 2
function add(num1,num2,num3){}
console.log(add.length); // --> 3
注意:在函数调用中传递的参数数量不会影响函数的数量。
arity 属性用于返回函数预期的参数数量,但是,它不再存在并已被 Function.prototype.length 属性取代。