2012-09-23 76 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

本質上不是 - 但可以將參數包裝到一個對象中並將其傳遞給該函數。 –

相關問題