Novedades en las funciones en ECMAScript 6

Ya me he arrancado a publicar novedades de ECMAScript 6 y no puedo parar 🙂 Y es que a mi JavaScript me encanta, no lo puedo evitar. Quizás porque es un lenguaje demasiado permisivo, que me obliga a esforzarme a programar bien sin apenas ayudas del IDE que esté utilizando, aunque bien es cierto que existen herramientas como JSHint, que te ayudan a no descarrilarse demasiado con la sintaxis, pero no deja de ser un reto.

En este artículo te quería contar diferentes características que han mejorado las funciones en ECMAScript 6, como son los parámetros por defecto, las arrow functions y las funciones generadoras, de las que ya te hablé la semana pasada.

Parámetros por defecto

Para mi, los parámetros por defecto es una de las características que más necesitaba en JavaScript, y a la que ya estábamos acostumbrados en otros lenguajes. Te permite eliminar líneas de código con comprobaciones y constantes con valores por defecto.

function add(a = 5, b = 10) {
    return a + b;
}

console.log(add()); //15

Como puedes ver, la forma de asignar un valor por defecto a uno o varios parámetros de una función es directamente en la declaración de la misma, utilizando el símbolo del igual y el valor que queremos dar por defecto. Si alguno de los parámetros no es pasado a la función utilizará su valor por defecto. Si por ejemplo quisiéramos pasar un valor al parámetro b pero no al parámetro a deberíamos asignar como primer valor undefined en los que queramos utilizar el valor por defecto.

console.log(add(undefined, 5)); //10

Yo te recomiendo que, cuando definas la función, dejes los parámetros con valor por defecto al final, para evitar añadir demasiados undefined en la llamada.

Arrow functions

Su diseño es más elegante de lo que estamos acostumbrados y ha tenido muy buena acogida. Siguiendo con el ejemplo de la suma, y obviando los parámetros por defecto, pasaríamos de tener una función de este modo:

function add(a, b) {
    return a + b;
}

//or

var add = function(a,b){
  return a + b;
}

a este otro:

var add = (a, b) => {
    return a + b;
}

Se podría simplificar mucho más eliminando las llaves, al ser solamente una sentencia, así como la palabra clave return:

var add = (a, b) => a + b;

E incluso podríamos simplificar mucho más eliminando los paréntesis de los parámetros si se tratara de uno solo:

var add = a => a + 10;

Por supuesto, podemos incorporar los parámetros por defecto si fuera necesario:

var add = (a = 5, b = 10) => a + b;

Funciones generadoras

Esta última novedad tiene su propio artículo, ¿Para qué sirve function*?, cuando todavía no pensaba en escribir una serie de artículos relacionados con ECMAScript 6. A modo resumen, se trata de un nuevo tipo de función que te permite pausarlas utilizando la palabra clave yield en diferentes puntos de las mismas. Echa un vistazo al artículo para saber más.

¡Saludos!