Functions in JavaScript: declarations, arrow functions and closures

function vs arrow (=>), default parameters, rest/spread, functions that return functions and closures, with interactive labs.

Hay dos formas de crear funciones. La arrow function (=>) es más corta y es lo que verás en el 90 % del código moderno.

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

const sumar = (a, b) => a + b;   // arrow: si es una expresión, return implícito

Parameters: default and rest

const saludar = (nombre, saludo = "Hola") => `${saludo}, ${nombre}!`;
const sumarTodos = (...numeros) => numeros.reduce((a, b) => a + b, 0);

Closures

Una función «recuerda» las variables del sitio donde se creó, aunque ese sitio ya haya terminado. Eso es una closure. Ejemplo clásico: un contador privado.

function crearContador() {
    let cuenta = 0;              // privada: solo la ven las funciones de aquí dentro
    return () => ++cuenta;
}
const siguiente = crearContador();
siguiente(); // 1
siguiente(); // 2

Check what you've learned