Funciones puras
Una función pura cumple dos reglas:
- Determinismo: con los mismos argumentos, siempre devuelve el mismo resultado.
- Sin efectos secundarios: no modifica nada fuera de ella (variables externas, el DOM, el array que recibe...).
// Pura: solo depende de sus argumentos
function sumar(a, b) {
return a + b;
}
// Impura: depende de algo externo y lo modifica
let total = 0;
function acumular(n) {
total += n; // efecto secundario
}
Las funciones puras son fáciles de probar, razonar y reutilizar, porque no guardan estado oculto ni sorprenden.
Inmutabilidad
En lugar de modificar datos, la programación funcional prefiere crear copias nuevas con los cambios aplicados. Así nadie se ve afectado por modificaciones inesperadas:
const numeros = [1, 2, 3];
// Mutar (evítalo en estilo funcional):
numeros.push(4);
// Inmutable: crea un array nuevo
const ampliado = [...numeros, 4];
Para objetos se usa el spread igual:
const usuario = { nombre: "Ana", edad: 30 };
const mayor = { ...usuario, edad: 31 }; // copia con un cambio
Ejemplos
Actualizar un objeto sin mutarlo
const usuario = { nombre: "Ana", edad: 30 };
const actualizado = { ...usuario, edad: 31 };
console.log(usuario.edad); // 30 (intacto)
console.log(actualizado.edad); // 31