【问题标题】:Get warning when passing too few arguments to a javascript function将太少的参数传递给 javascript 函数时收到警告
【发布时间】:2014-08-18 13:45:33
【问题描述】:

是否有工具可以帮助我检测何时传递的 javascript 函数的参数太少?据我所知,JSLint 和 JSHint 都没有提供这个功能。

请说清楚,如果我写的话:

some_method = function(x,y) {
  // ..do stuff
}
some_method(2);

我想被警告,我可能不得不传入另一个参数。

【问题讨论】:

  • 您可能希望验证传入的内容(例如检查空值/未定义值等),然后适当地处理无效输入。
  • 请注意,JavaScript 中的函数是可变参数的,JSHint 或 JSLint 没有什么神奇的方法可以知道您总是对 some_method 使用 2 个参数:例如,它如何知道是否第二个参数是可选的?
  • 我认为如果不实际在内存中创建对象就无法真正验证这一点。你可以求助于检查函数内部传递的值。

标签: javascript jslint jshint


【解决方案1】:

您不能这样做,所有参数始终是可选的,您可以将无限数量的参数传递给无参数函数(通过 arguments 数组)。

但是您可以使用 arguments 数组来手动测试您自己的方法。您必须将它单独添加到每个方法中,因为您无法在方法签名中反映参数的数量。因此,对于这种特定情况,您将使用:

function test(x, y) {
  if (arguments.length !== 2)
    {
      console.log('error, invalid amount of args');
    }
}

test(1); // this will trigger the console.log and type the error.

如果你真的需要参数检查,你可以使用 TypeScript 之类的东西,默认情况下需要参数。

【讨论】:

  • 问题不在于如何手动实现,而是如何在使用 JSLint 或 JSHint 等工具检查代码时获得通知……
  • 你不能那样做,所有的参数都是可选的,你可以将不定数量的参数传递给一个无参数函数(同样,通过参数数组)。
  • “你不能那样做”——那么你的回答应该说明这一点,而不是回答一个完全不同的问题……
【解决方案2】:

如果您想在函数中获取一些可选参数,您可以将参数作为数组传递,并且可以验证每个数组的值。 像这样:

function action(param)
{
    var total_params = param.length;
    console.log(param);

    // do stuff
}

action(Array('param01',02, true, 'param04'));

【讨论】:

  • 这对于传入一个数字参数是错误的:Array(5) 创建一个包含 5 个空元素的数组。您应该改用数组文字。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2011-10-02
  • 2016-01-16
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多