2012-09-23 57 views
15

说我有这样的功能,我打电话整个脚本:我是否需要将空参数传递给javascript函数?

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

在我的大部分功能的电话,我只是路过的第一个参数。

问:
它是确定在这种情况下忽略传递空参数,就像这样:

form_senden("abc"); 

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

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

谢谢!

+4

我推荐使用的选项参数对象,如果你有很多:'form_senden( {form_name:'...',cnf:'...')'或'form_senden(form_name,{confirm_txt:'...',allow:true})'。 –

+0

然后我只通过我想要的选项? – frequent

+3

对,大量的位置参数是一种(坏)代码味道,特别是当它们中的大多数是可选的时。当你必须再次找出这些代码时,你会很高兴你在这六个月的时间里完成了。 –

回答

12

form_senden(“abc”);正常

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

+0

我以最快的速度前进。谢谢大家! – frequent

2

省略函数参数没问题,缺少的参数在函数中会有undefined的值。

2

你可能只是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 
} 
+1

无需明确指定默认值 –

+3

定义默认值的简单形式: ** cnf = cnf || '默认值'; ** – jmav

70

这是好的,只通过第一个参数的所有其他将不会设置。 如果你想设置的第一和第三的说法,你将需要第二个空,就像这样:

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

这是我正在寻找的答案,比选定的答案更完整。 +1 –

+1

有没有一种方法可以更加明确地传递可选参数?在Python中,你可以做这样的form_senden(“a”,cnf = None,“b”)。你可以在JavaScript中做类似的事吗? – HussienK

+0

本质上不是 - 但可以将参数包装到一个对象中并将其传递给该函数。 –