DevPath · Aprende a programar ESPTEN

Programación funcional

Funciones puras e inmutabilidad

Funciones puras

Una función pura cumple dos reglas:

  1. Determinismo: con los mismos argumentos, siempre devuelve el mismo resultado.
  2. 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
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
Funciones de orden superior y map/filter/reduce →