获取javascript函数对象的参数计数(或甚至名称)

Tom*_*ica 11 javascript function object

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

Mat*_*att 22

函数有一个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!
Run Code Online (Sandbox Code Playgroud)