Parámetros opcionales en funciones de JavaScript

El desarrollo web siempre tiene dos interacciones: la que se produce en el lado del servidor y la que se produce en el lado del cliente. Esta segunda cada vez tiene más relevancia para conseguir una mejor experiencia del usuario y JavaScript es el responsable de ésto.
JavaScript es una de esas tecnologías que se pensó para abordar pequeños problemas, pero que por cuestiones de compatibilidad y aceleración tecnológica, se ha convertido en una tecnología versátil a la vez que necesaria para poder afrontar las exigencias de la actualidad.
En lenguajes como PHP, podemos hacer uso de parámetros opcionales (aquí explicaba su uso al hablar de cómo podíamos imitar la sobrecarga de funciones en el curso de PHP orientado a objetos), por ejemplo:
function crearPersona($nombre = "")
Y sus respectivas llamadas:
crearPersona("Javier");
crearPersona();
Sin embargo, en JavaScript no tenemos esta posibilidad, aunque al igual que ocurría con la sobrecarga de funciones en PHP, podemos imitarlo. Veamos cómo.
Usando un condicional con undefined
Empezamos por la forma larga, que es la que menos me gusta:
function crearPersona(nombre)
{
  if(nombre == undefined)
  {
    // si no se especifica nombre
    nombre = "Javier";
  }
  else
  {
     // si se especifica
  }
}
Comprobando y asignando en una sola línea
Este método “largo” se puede reducir muchísimo, ganando en legibilidad y comodidad. ¿Cómo? La idea es “si la variable no es definida, toma el valor por defecto, si no, toma el que traes de la llamada”. Podemos reducir esta sentencia a la siguiente línea de código:
function crearPersona(nombre)
{
  var nombre = nombre || "Javier";
}
Varios parámetros
Al igual que ocurre en otros lenguajes, al haber varios parámetros, los parámetros opcionales tienen que estar siempre al final y habrá que tener cuidado en la forma en que los llamamos. Es decir, si tenemos cuatro parámetros y tres son opcionales, tendrán que ser los últimos y nos limitaremos a obviar los parámetros del final. Si no respetáramos esta regla, el intérprete en este caso y el compilador en otras, no sabría qué parámetros hemos quitado y cuáles hemos dejado.
Para evitar este problema y darle mayor claridad a todo este asunto, podemos usar jQuery y su función extend. ¿Cómo?
// aquí rellenamos los valores para nuestra llamada
var params = {
    nombre: "Francisco Javier",
    apellidos: "Carazo Gil",
    web: "reddeautores.com"
};
crearPersona(params);
function crearPersona(params) {
    // valores por defecto
    var porDefecto = {
        nombre: "Nacho",
        apellidos: "López",
        web: "linuxhispano.net",
        edad: 26 // por defecto
    }
    $.extend(porDefecto, params);
}
De esta forma conseguimos:
  • Poder usar el orden que queramos al llamar a los parámetros
  • Usar tantos parámetros opcionales como necesitemos
  • Clarificar la llegada de parámetros a las funciones

Comentarios

Entradas populares de este blog

Que se debe hacer para que Pi Network pueda salir a precio de GCV (314,150 USD) segun ChatGPT.

Los 3 Mejores Sistemas Operativos Basados en Linux para Principiantes

La Importancia de Mantener Sincronizados tus Fotos y Videos con Google Fotos y Google Drive