I want to evaluate callback function before accepting it. This means I need to know at least the count of accepted argumens - if count doesn't match, I'll leave warning in console.
But I can't find out, whether a javascript function object has a property that would help me get that information.
So can this be achieved without parsing function as string (not worth it)?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
A function has a length
property which tells you how many named arguments it accepts. Note however, a function can use the arguments
variable to access variables, even if it doesn't name them; length
doesn't cater for this (nor is there an alternative which does).
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!
回答2:
Here is shorter version var a = function(){ return [...arguments].length}