Contenido

Parámetros por defecto en funciones Javascript

28 sep

+ 7

Una de las propiedades de PHP que más me gustan es la posibilidad de especificar un valor por defecto a los parámetros que pasamos a un función.

function miFuncion(param = "uno", param2="dos"){
...
}
// Ejemplo
miFuncion();

De esta forma definimos un valor para los parámetros que en caso de no ser definidos será cargados inicialmente con dichos valores.

Javascript es un lenguaje que no permite especificar el valor de estos parámetros por defecto, pero el ingenio y la imaginación permite que grandes mentes puedan superar estas dificultades.

Function.prototype.defaults = function()
{
  var _f = this;
  var _a = Array(_f.length-arguments.length).concat(
    Array.prototype.slice.apply(arguments));
  return function()
  {
    return _f.apply(_f, Array.prototype.slice.apply(arguments).concat(
      _a.slice(arguments.length, _a.length)));
  }
}

Extendiendo el elemento Function nos evitamos tener que controlar en el interior de nuestra función los parámetros que recibimos:

function foo(a, b)
{
  a = typeof(a) != 'undefined' ? a : 42;
  b = typeof(b) != 'undefined' ? b : 'default_b';
  ...
}

Al haber extendido la función, ahora disponemos de un sistema con el que podemos definir los valores por defecto de los parámetros.

var foo = function(a, b)
{
  ...
}.defaults(42, 'default_b');

En este ejemplo, vemos como definimos por defecto los valores 42 para el parámetro a y ‘default_b’ para el parámetro b.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.