您可以使用该arguments
对象。
function myFunction(param1,param2)
{
if (arguments.length!=2)
{
// wrong param number!
}
...
}
根据您的编辑:如果您想实现自动形式的检查,而无需触及原始功能:
您仍然必须使用以下方法处理每个功能:
functionName = debug(functionName, numberOfExpectedArgs);
此操作通过检查参数数量来包装函数。
所以我们保留一个示例函数不变:
// this is the original function... we want to implement argument number
// checking without insertint ANY debug code and ANY modification
function myFunction(a,b,c)
{
return a + " " + b + " " + c;
}
// the only addition is to do this...
myFunction = debug(myFunction,3); // <- implement arg number check on myFunction for 3 args
// let's test it...
console.log(myFunction(1,2,3));
console.log(myFunction(1,2));
你需要实现这个debug()
功能:
function debug(f, n)
{
var f2 = f;
var fn = function()
{
if (arguments.length!=n) console.log("WARNING, wrong argument number");
return f2.apply(f2, arguments);
};
return fn;
}
根据已经定义的功能,这个解决方案是完全透明的,所以它可能是你想要的。我强烈建议检查弃用(有一些)和跨浏览器兼容性。