12

我想在接受之前评估回调函数。这意味着我至少需要知道接受的参数的数量 - 如果数量不匹配,我将在控制台中留下警告。但我不知道 javascript 函数对象是否具有可以帮助我获取该信息的属性。
那么这可以在将函数解析为字符串的情况下实现吗(不值得)?

4

2 回答 2

25

一个函数有一个length属性,它告诉你它接受多少个命名参数。但是请注意,函数可以使用arguments变量来访问变量,即使它没有命名它们;length不满足这一点(也没有替代方案)。

function foo(a, b) {
    for (var i=0;i<arguments.length;i++) {
        console.log(arguments[i]);
    }
}

console.log(foo.length); // reports 2, even though `foo` can access all your arguments!
于 2013-08-24T19:55:26.437 回答
-2

这是较短的版本 var a = function(){ return [...arguments].length}

于 2017-05-18T16:50:29.500 回答