A diferencia de otros lenguajes javascript no posee la opción de crear funciones con parámetros con valores por defecto.
El asunto tiene un arreglo bastante «sencillo».

La vía rápida es crear las funciones con la siguiente estructura :

function mi_funcion(parametro1, parametro2){
   //queremos que parametro1 tenga por defecto el valor 33
   parametro1 = parametro1 || 33;
   //queremos que parametro2 tenga por defecto el valor false
   parametro2 = parametro2 || false;
   // ... resto código ...
}

Si además deseamos controlar algunos valores que contienen las variables en determinados momentos como puede ser el valor ‘undefined’ podemos apañar el código anterior de la siguiente manera.

function mi_funcion(parametro1, parametro2){
   //queremos que parametro1 tenga por defecto el valor 33 pero que respete posibles valores undefined
   parametro1 = (typeof parametro1 == 'undefined') ? 33: parametro1 ;
   //queremos que parametro2 tenga por defecto el valor false
   parametro2 = parametro2 || false;
   // ... resto código ...
}

¿A quién no le gusta tener una función que le facilite las cosas?

//valores por defecto 
//valor (contiene el valor actual del parámetro), defecto (contiene el valor por defecto)
//quiero_null (especifica si deseamos controlar algo especial, en este caso el valor 'undefined' , 
//                posibles valores true o false, por defecto adquiere false)
function defecto(valor, defecto, quiero_null){
	quiero_null = quiero_null || false;   
	if (quiero_null){
		valor = (typeof valor == 'undefined') ? defecto : valor;
	}else{
		valor = valor || defecto;
	}	
	return valor;
}

El código se puede «comprimir» todavía más, personalmente prefiero conservar claridad antes que ahorrarme un par de bytes.
Apliquemos la nueva función para otorgar valores por defecto a los parámetros de nuestras funciones.


//valores por defecto 
function defecto(valor, defecto, quiero_null){
	quiero_null = quiero_null || false;   
	if (quiero_null){
		valor = (typeof valor == 'undefined') ? defecto : valor;
	}else{
		valor = valor || defecto;
	}	
	return valor;
}

//nuestra función con valores por defecto
function mi_funcion(parametro1, parametro2){
   //queremos que parametro1 tenga por defecto el valor 33 pero que respete posibles valores undefined
   parametro1 = defecto(parametro1, 33, true);
   //queremos que parametro2 tenga por defecto el valor false
   parametro2 = defecto(parametro2 , false);
   // ... resto código ...
}

Entradas relacionadas