如何知道函数是否接受参数?

时间:2016-12-13 19:01:16

标签: javascript

拥有一个具有2种可能方法的对象,有一种简单的方法可以检查方法是否接受参数,使用纯javascript:

getItems(id) {...};
getItems() {...};

想检查方法是否接受id参数?

1 个答案:

答案 0 :(得分:7)

您可以从函数的length属性中获取形式参数的数量( arity ):

function zero() { }
function one(a) { }
console.log(zero.length); // 0
console.log(one.length);  // 1

在JavaScript中,这与在任何给定的特定场合实际调用它的参数的数量不同,您可以从函数中的arguments伪数组中获取它(或者在ES2015 +中,通过使用rest参数并获取其长度。)

说到ES2015,rest参数不会添加到arity中,所以:

function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1

类似地,带有默认参数的参数不会添加到arity,并且实际上会阻止其后的任何其他参数添加到它(它们被假定为默认默认值为undefined):< / p>

function oneAgain(a, b = 42) { }
console.log(oneAgain.length);    // 1

function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1