我是否需要将空参数传递给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,并将a和b设置为其默认值,则可以如下方式调用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,未定义、非空是唯一的可能性