【问题标题】:Do I need to pass empty parameters to a javascript function?我需要将空参数传递给 javascript 函数吗?
【发布时间】:2012-09-15 09:26:16
【问题描述】:

假设我有一个这样的函数,我在整个脚本中调用它:

  function form_senden( form_name, cnf, confirm_txt, trigger_field, ,do_check, chknfcs, allow, errorMsg ){
  // do something 
  }

在我的大多数函数调用中,我只传递第一个参数。

问题:
在这种情况下是否可以省略传递空参数,如下所示:

  form_senden("abc");

或者我是否需要传递所有参数,无论它们是否像这样使用:

  form_senden("abc","","","","","","","","");

谢谢!

【问题讨论】:

  • 如果你有这么多参数,我建议使用选项对象:form_senden({ form_name: '...', cnf: '...') 或 form_senden(form_name, { confirm_txt: '...', allow: true })。
  • 然后我只传递我想要的选项?
  • 对,大量的位置参数是一种(不好的)代码味道,尤其是当它们中的大多数是可选的时。当你不得不再次弄清楚这段代码时,你会很高兴你在六个月后完成了这件事。

标签: javascript function parameters optional-parameters


【解决方案1】:

只传递第一个参数是可以的,因为不会设置所有其他参数。 如果要设置第一个和第三个参数,则需要将第二个设置为空,如下所示:

form_senden("a",null,"b");

【讨论】:

  • 这是我一直在寻找的答案,并且比所选答案更完整。 +1
  • 有没有一种方法可以更明确地传递可选参数?在 python 中,您可以执行类似 form_senden("a", cnf=None, "b") 的操作。你能在 JavaScript 中做类似的事情吗?
  • 不是原生的 - 但您可以将参数包装到一个对象中并将其交给函数。
  • undefined,not null,是根据 tslint 的唯一可能性
【解决方案2】:

form_senden("abc");没问题

其他参数将被初始化为未定义

【讨论】:

    【解决方案3】:

    您可以只在form_senden("abc"); 将默认值放入函数定义中。

        function form_senden( form_name, cnf , confirm_txt , trigger_field , ,do_check , chknfcs, allow, errorMsg  ){
    
    if(typeof(cnf)==='undefined') cnf = '';
    if(typeof(confirm_txt)==='undefined') confirm_txt = ''; ...and so on
    // do something 
    }
    

    【讨论】:

    • 定义默认值的简单形式:cnf = cnf || '默认值';
    【解决方案4】:

    省略函数参数是可以的,缺少的参数将在函数中具有undefined值。

    【讨论】:

      【解决方案5】:

      为了完整性,在 ES6 (ES2015) 及更高版本中,可以指定默认值

      // `b` will default to 1
      
      function multiply(a, b = 1) {
        return a * b;
      }
      

      【讨论】:

        【解决方案6】:

        如果你有类似的东西:

        const myFunc = (a = 1, b = 2, c = 3) => a + b + c;

        如果您拨打myFunc();,您将获得6。

        但如果你想用 c = 4 调用 myFunc 并让 a 和 b 为其默认值,你可以调用myFunc 像这样:

        myFunc(undefined, undefined, 4); 这将返回 7。

        【讨论】:

        • JS 是否允许 myFunc( , , 4);或 myFunc(3, , 4); ??
        【解决方案7】:

        在这里,我找到了将空值或空值传递给函数的解决方案。它适用于 node.js

            function returnJSON(name,value1,value2,text){
                return object = {
                    'name':name,
                    'value1':value1,
                    'value2':value2,
                    'text':text
                }
            }
            returnJSON('Hello World',undefined,undefined,'This is Text');
        

        【讨论】:

          【解决方案8】:

          关于默认参数设置。如果您使用函数 f(arg=1) {} 等默认参数设置,则默认值的设置将不适用于传入的 false、nulll 或零。您必须将 arg/参数留空或传入未定义。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-01-12
            • 1970-01-01
            • 1970-01-01
            • 2011-10-02
            • 2016-01-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多