Funciones en JavaScript: declaración, arrow functions y closures

function vs arrow (=>), parámetros por defecto, rest/spread, funciones que devuelven funciones y closures, con laboratorios interactivos.

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

Parámetros: por defecto y 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

Comprueba lo aprendido