如何检查参数是否在JavaScript中的函数定义中定义?
问题描述:
例如,如果我已经定义了这样的功能:如何检查参数是否在JavaScript中的函数定义中定义?
function set_name(name) {
return name;
}
但我这样调用它(因个人原因这样):
set_name.apply(this, ['Duvdevan', 'Omerowitz']);
什么将是检查的最佳实践和阻止set_name
函数的进一步执行,如果它接受了多于1
参数/参数?
而且,我必须指出,我试图找出一种方法来检查这个之前,我打电话.apply
功能:
function set_name(name) {
// if(arguments.length > 1) console.log('This is not what I need though.');
return name;
}
var args = ['Duvdevan', 'Omerowitz'];
// Now, at this point I'd like to check if the set_name function can accept two arguments.
// If not, I'd console.log or return new Error here.
set_name.apply(this, args);
这是可行的?
答
您可以通过Function.length
得到的函数预期参数个数:
function set_name(name) {
return name;
}
var args = ['Duvdevan', 'Omerowitz'];
console.log(set_name.length); // 1
if (args.length > set_name.length) {
throw new Error('Too many values'); // throws
}
set_name.apply(this, args); // not executed
+0
该死的真棒!实际上,我担心我必须执行'set_name.toString()'并解析已定义参数的实际函数定义......但是,您是JavaScript Gandalf!谢谢! – omerowitz
所以,如果它有多个参数,你想让它不跑?只有这样,如果你喜欢你编码它... – epascarello