javascript - 如何检查 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

关于javascript - 如何检查 JavaScript 函数定义中是否定义了参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40537636/

相关文章:

javascript - 如何检查多个值以及 if 语句中匹配的值?

javascript - 从 JavaScript 文件的函数获取数字到 HTML

javascript - 如何调用 javaScript 函数

javascript - 如何使某个框等于图像 HTML 的位置

javascript - Angular JS 中的 $http.get API

javascript - 如何将对象拆分为嵌套对象? (递归方式)

javascript - 当用户语言从英语变为希伯来语时如何更改字体系列

javascript - 如何在 Angular chart.js 中更改 Canvas 高度和宽度

javascript - 如何使图像和镜头旋转与 BlowupJS 保持同步?

javascript - 如何使用 AngularJS 的 ngRepeat 指令从嵌套的 JSON 对象动态生成 HTML 表?