2016-11-10 86 views
2

例如,如果我已经定义了这样的功能:如何检查参数是否在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); 

这是可行的?

+0

所以,如果它有多个参数,你想让它不跑?只有这样,如果你喜欢你编码它... – epascarello

回答

3

您可以通过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

相关问题