Parámetros opcionales en javascript

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 ...
}

Anécdotas de Albert Einstein

Un periodista le preguntó a Einstein:
– ‘¿Me puede UD. explicar la Ley de la Relatividad?’
Y Einstein le contestó:
– ‘¿Me puede UD. explicar cómo se fríe un huevo?’
El periodista lo miró extrañado y le contesta:
– ‘Pues sí, sí que puedo’.
A lo cual Einstein replicó:
– ‘Bueno pues hágalo, pero imaginando que yo no sé lo que es un huevo, ni una sartén, ni el aceite, ni el fuego’.

_______________________________________________________________

Durante el nazismo Einstein, a causa de ser judío debió de soportar una guerra en su contra a fin de desprestigiar sus investigaciones. Uno de estos intentos se dio cuando se compilaron las opiniones de 100 científicos que contradecían las de Einstein editadas en un libro llamado ‘Cien autores en contra de Einstein’.
A esto Einstein respondió:
-‘¿Por qué cien?. Si estuviese errado haría falta solo uno’.

_______________________________________________________________

En una conferencia que Einstein dio en un Colegio de Francia, el escritor francés Paul Valery le preguntó:
– ‘Profesor Einstein cuando tiene una idea original ¿qué hace? ¿La anota en un cuaderno o en una hoja suelta?’
A lo que Einstein respondió:
-‘Cuando tengo una idea original no se me olvida’.

_______________________________________________________________

Einstein tuvo tres nacionalidades: alemana, suiza y estadounidense. Al final de su vida un periodista le preguntó que posibles repercusiones habían tenido sobre su fama estos cambios.
Einstein respondió:
– ‘Si mis teorías hubieran resultado falsas los estadounidenses dirían que yo era un físico suizo, los suizos que era un científico alemán, y los alemanes que era un astrónomo judío’.

_______________________________________________________________

Se cuenta que en una reunión social Einstein coincidió con el actor Charles Chaplin. En el transcurso de la conversación Einstein le dijo a Chaplin:
-‘Lo que he admirado siempre de usted es que su arte es universal todo el mundo le comprende y le admira’.
A lo que Chaplin respondió:
-‘Lo suyo es mucho más digno de respeto: todo el mundo lo admira y prácticamente nadie lo comprende’.

_______________________________________________________________

Se cuenta que en los años 20 cuando Albert Einstein empezaba a ser conocido por su Teoría de la Relatividad era con frecuencia solicitado por las universidades para dar conferencias. Dado que no le gustaba conducir y sin embargo el coche le resultaba muy cómodo para sus desplazamientos contrató los servicios de un chofer.
Después de varios días de viaje Einstein le comentó al chofer lo aburrido que era repetir lo mismo una y otra vez.
– ‘Si quiere -le dijo el chofer- lo puedo sustituir por una noche. He oído su conferencia tantas veces que la puedo recitar palabra por palabra.’
Einstein estuvo de acuerdo y antes de llegar al siguiente lugar intercambiaron sus ropas y Einstein se puso al volante.

Llegaron a la sala donde se iba a celebrar la conferencia y como ninguno de los académicos presentes conocía a Einstein no se descubrió la farsa.
El chofer expuso la conferencia que había oído repetir tantas veces a Einstein.
Al final un profesor en la audiencia le hizo una pregunta. El chofer no tenía ni idea de cuál podía ser la respuesta, sin embargo tuvo una chispa de inspiración y le contestó:

‘La pregunta que me hace es tan sencilla que dejaré que se la responda la persona que se encuentra al final de la sala…que es mi chofer’.

Visto en thedarkside