2012-09-23 34 views
15

Digamos que tiene una función como esta, que yo estoy llamando a lo largo de una secuencia de comandos:¿Debo pasar parámetros vacíos a una función de JavaScript?

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

En la mayoría de mis llamadas de función, sólo estoy pasando el primer parámetro.

Pregunta:
¿Es aceptable en este caso de omitir el paso de parámetros vacíos, así:

form_senden("abc"); 

o tengo que pasar todos los parámetros sin tener en cuenta si se utilizan de esta manera:

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

Gracias!

+4

le recomiendo usar un objeto opciones para los parámetros si tiene que muchos: 'form_senden ({form_name: '...', cnf: '...') 'o' form_senden (form_name, {confirm_txt: '...', allow: true}) '. –

+0

y luego solo paso las opciones que quiero? – frequent

+3

Correcto, una gran cantidad de parámetros de posición es un olor de código (malo), especialmente cuando la mayoría de ellos son opcionales. Te alegrarás de haber hecho esto seis meses después cuando tengas que descubrir este código nuevamente. –

Respuesta

12

form_senden ("abc"); está bien

los demás parámetros se inicializará como no definidos

+0

Voy con el más rápido. ¡Gracias a todos! – frequent

2

Omitir los parámetros de la función está bien, los parámetros que faltan tendrán undefined valor en la función.

2

puede hacer simplemente form_senden("abc"); poniendo valores por defecto en la definición de la función.

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

hay necesidad de especificar explícitamente valores predeterminados –

+3

forma simple para definir el valor por defecto: ** CNF = CNF || 'valor predeterminado'; ** – jmav

70

Está bien para pasar solamente el primer parámetro que no se establecerán todas las demás. Si desea establecer la primera y la tercera discusión, que tendrá que hacer el segundo nula, así:

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

Esta es la respuesta que estaba buscando, y es más completa que la respuesta seleccionada. +1 –

+1

¿Hay alguna manera de que pueda ser más explícito al pasar argumentos opcionales? En Python puedes hacer algo como esto form_senden ("a", cnf = None, "b"). ¿Puedes hacer algo similar a esto en JavaScript? – HussienK

+0

No de forma nativa, pero puede ajustar sus parámetros en un objeto y entregarlo a la función. –

Cuestiones relacionadas