2012-09-23 2 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 || 'default value'; ** – jmav

70

Это нормально передавать только первый параметр, как все остальные не будут установлены. Если вы хотите установить 1-й и 3-й аргумент, вам нужно будет сделать 2-й нуль, так как:

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

Это ответ, который я искал, и является более полным, чем выбранный ответ. +1 –

+1

Есть ли способ, которым я могу быть более явным с передачей необязательных аргументов? В python вы можете сделать что-то вроде form_senden («a», cnf = None, «b»). Можете ли вы сделать что-то подобное в JavaScript? – HussienK

+0

Не изначально - но вы можете обернуть ваши параметры в объект и передать его функции. –

Смежные вопросы