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
const f = (a, b) => a + b; — ¿qué devuelve f(2, 3)?const f = (...n) => ..., n es…siguiente() devuelve 1, 2, 3… porque…