【问题标题】:How do you generate a function that warns about not enough arguments?如何生成一个警告参数不足的函数?
【发布时间】:2017-12-09 09:46:24
【问题描述】:

如果您正在动态生成具有不同数量的所需参数的函数,您如何确定 如果未来数量 为函数调用提供参数足够和/或如何确保你的函数警告 s for / 关于必需的,或缺少参数

匿名函数可能有一个简单的结构体:

fucntion( x, y, z ) {
        /*test for the arguments supplied*/
    if( notEnoughArguments )
        /*exit the function and return a warning*/   
        /*otherwise, say ...*/
     return x*y*x
    }

问题:您事先不知道某个函数需要多少参数,并且您不确定在函数调用时将提供/提供多少参数。

【问题讨论】:

  • 您可以检查arguments.length < 3 以确保至少提供了三个参数。如果您不想中止,您可以throw new Error('missing arguments') 抛出异常并中止或登录到控制台。
  • 好吧,这只是一个问题。
  • 对我来说这是一个非常有效的问题,与建议的副本不同。
  • 如果我不喜欢这个问题,我会 dv 它,如果我认为这是一个骗子,我可以直接关闭它。无论如何arguments.length 是函数的属性。

标签: javascript function arguments anonymous


【解决方案1】:

您可以在函数内使用 arguments 对象。例如arguments.length 将提供传递给函数的参数数量。更多详情请查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

【讨论】:

    【解决方案2】:

    您可以检查arguments 的长度与Function.length 的对比。

    在函数中...

    length 属性指定了预期的参数数量 功能。

    arguments 对象是一个类似数组的对象,包含传递给函数的所有参数。

    function multi(x, y, z) {
      if(arguments.length < multi.length) {
        console.log('not enough arugments');
        return null;
      }
    
      return x * y * x
    }
    
    multi();
    
    console.log(multi(1, 2, 3));

    【讨论】:

    • 那很好,但除非有办法生成命名函数,否则生成的函数将是匿名的。
    • 您可以随时为函数添加名称——甚至是匿名函数。 var a = function b(); -> 函数的内部名称是b。它也适用于回调 -> .map(function m() {}).
    • 你可能想告诉 mdn 的 arguments article
    • @BekimBacaj - 随时提供您自己的参考资料。然而,你离题了。答案对您的问题有帮助吗?如果不是,为什么?
    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多