我是否需要将空参数传递给javascript函数?

我是否需要将空参数传递给javascript函数?,javascript,function,parameters,optional-parameters,Javascript,Function,Parameters,Optional Parameters,假设我有这样一个函数,我在整个脚本中调用它: function form_senden( form_name, cnf, confirm_txt, trigger_field, ,do_check, chknfcs, allow, errorMsg ){ // do something } 在大多数函数调用中,我只传递第一个参数 问题: 在这种情况下,是否可以省略传递空参数,如下所示: form_senden("abc"); 或者,我是否需要传递所有参数,而不管它们是否如此

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

  function form_senden( form_name, cnf, confirm_txt, trigger_field, ,do_check, chknfcs, allow, errorMsg ){
  // do something 
  }
在大多数函数调用中,我只传递第一个参数

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

  form_senden("abc");
或者,我是否需要传递所有参数,而不管它们是否如此使用:

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

谢谢

省略函数参数是可以的,缺少的参数将在函数中有
未定义的值。

您只需执行
表单发送(“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 
}
表格_senden(“abc”);没关系


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

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

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

// `b` will default to 1

function multiply(a, b = 1) {
  return a * b;
}

关于默认参数设置。如果您使用的是默认参数设置,如函数f(arg=1){},则默认值的设置对于传入的false、null或zero无效。您必须将arg/参数保留为空或传入未定义的参数。

如果您有以下内容:

constmyfunc=(a=1,b=2,c=3)=>a+b+c

如果调用
myFunc()您将获得6

但是,例如,如果您想使用c=4调用myFunc,并将ab设置为其默认值,则可以如下方式调用myFunc


myFunc(未定义,未定义,4)这将返回7

在这里,我找到了一个解决方案,可以将null或空值传递给函数。它在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');

如果你有那么多的参数,我建议使用一个选项对象:
form\u senden({form\u name:'…',cnf:'…')
form\u senden(form\u name,{confirm\u txt:'…',allow:true})
,然后我只传递我想要的选项?对,大量的位置参数是错误的代码气味,特别是当大多数代码都是可选的时候。你会很高兴你在六个月后再次找到了这段代码。定义默认值的简单形式:cnf=cnf | | |“default value”;这是我一直在寻找的答案,比选择的答案更完整。+1有没有一种方法可以让我更明确通过传递可选参数?在python中,您可以执行类似于以下形式的操作(“a”,cnf=None,“b”)。您可以在JavaScript中执行类似的操作吗?不是以本机方式,但您可以将参数包装到对象中并将其交给函数。根据tslint,未定义、非空是唯一的可能性