Funciones: Argumentos y Parámetros
Todos conocemos lo que son los parámetros en una función, en muchos lenguajes simplemente los definimos en lo que se puede llamar la firma del método o función y cuando queremos opcionales?, o simplemente utilizar menos?, bueno definimos nulleables, hacemos otras firmas con menos o mas parámetros, en algunos lenguajes podemos definir cuales son opcionales, etc. Pero en javascript es aún mas fácil, no hacemos nada, simplemente no los pasamos:
Javascript nos deja llamar a la funcion con menos parámetros sin problemas (siempre desde izquierda a derecha), hasta no enviando ni siquiera uno, o mas de los que permite.
Nunca se preguntaron como funciona jQuery en los getter y setter?, por ejemplo la función text()
La función es la misma, no hay sobrecargas ni declaraciones especiales de parametro opcional, es que javascript nos deja utilizar la función sin problemas enviando más o ningún parámetro. Pero cómo podemos saber que llega y que no?, bueno en principio podemos comprobar contra undefined de esta manera:
Es una manera, pero hay otras formas de comprobar que llega o no a una función y estos son los argumentos
Con los argumentos podemos ver cuantos llegaron, quien llamo, sus valores y hasta ver los que no estamos esperando y fueron enviados igual.
Que tiene de mejor esto que comprobar contra undefined?, podemos tomar directamente el argumento por el índice. Pero tampoco es toda la idea, ya que sino para qué ponemos nombres a los parámetros o siquiera para que ponemos parámetros?, bueno sepan que existe y está ahi para usar, pero tampoco es para hacer nuestro código ilegible y complicado.
Usar parametros o un objeto?
Qué pasa cuando tenemos una función con 3 parámetros y necesitamos agregar uno más?, editar la función y tener en cuenta el código ya existente para que admita ese parametro, con su refactorización de código … uff molesto. Y si utilizamos un objeto como parámetro?
Suena bien, no?, no siempre es la opción pero es mucho más mantenible, ya que no cambiamos la firma de la función cada vez que necesitamos algo nuevo y mantenemos la nomenclatura de los parametros siendo código más legible.