Que cara#!$ es la inmutabilidad en Javascript?
⚛️

Que cara#!$ es la inmutabilidad en Javascript?

Tags
React.js
Web Dev
Javascript
Spanish
Published
August 5, 2025
Author
Francisco J. Moreno

🔍 Entendiendo la Inmutabilidad en JavaScript (y por qué importa en React)

La inmutabilidad es uno de esos conceptos que al principio puede parecer abstracto — pero una vez que lo entiendes, te permite comprender mucho mejor cómo funciona React detrás de cámaras.
Vamos a desglosarlo.

🧠 ¿Qué es la Inmutabilidad?

La inmutabilidad significa que un valor no puede cambiar después de haber sido creado.
En lugar de modificar un valor existente, se crea una nueva copia con los cambios aplicados.

⚛️ ¿Por qué importa la inmutabilidad en React?

React depende en gran medida de las comparaciones por referencia para saber si debe volver a renderizar un componente. Esto se conoce como shallow comparison (comparación superficial).
  • ✅ Si devuelves una nueva referencia (un nuevo objeto o array), React lo detecta como un cambio → se re-renderiza
  • ❌ Si modificas un objeto o array existente, la referencia sigue siendo la misma → React piensa que no hubo cambios → no se re-renderiza.

🔁 Ejemplos de Mutabilidad vs Inmutabilidad

🔴 Mutable (modifica la misma referencia)

const lista = [1, 2, 3]; lista.push(4); // modifica el array original console.log(lista); // [1, 2, 3, 4
Aquí estás mutando el array original. La misma referencia en memoria se modifica.

✅ Inmutable (crea una nueva referencia)

const lista = [1, 2, 3]; const nuevaLista = [...lista, 4]; // crea un nuevo array console.log(lista); // [1, 2, 3] console.log(nuevaLista); // [1, 2, 3, 4]
Con el spread operator (...), estás creando un nuevo array. React puede detectar el cambio porque la referencia es diferente.

🧬 ¿Y los objetos?

🔴 Mutar un objeto

const persona = { nombre: "Ana", edad: 25 }; persona.edad = 26; // modifica el objeto original

✅ Crear un objeto nuevo (inmutable)

const persona = { nombre: "Ana", edad: 25 }; const nuevaPersona = { ...persona, edad: 26 };
Aquí no estás cambiando persona, sino creando un nuevo objeto (nuevaPersona) con el valor actualizado.

🔍 Cómo actúa React con el shallow comparison

Veamos dos casos:
const nuevoArray = viejoArray;
nuevoArray === viejoArray → React: "No ha cambiado nada." → ❌ No se re-renderiza.
const nuevoArray = [...viejoArray];
nuevoArray !== viejoArray → React: "¡Ah, sí cambió!" → ✅ Se re-renderiza.
Así funciona la inmutabilidad en React.

💡 Analogía rápida

Piensa en escribir sobre papel:
  • ✏️ Mutabilidad: borras algo y escribes sobre la misma hoja.
  • 📝 Inmutabilidad: tomas una hoja nueva con los cambios ya escritos, y dejas la original intacta.
React prefiere esta última.

🧪 ¿Qué es mutable y qué no en JavaScript?

Tipo de dato
¿Es mutable?
Ejemplo de inmutabilidad
number
❌ No
let x = 5 → 5 no puede cambiar
string
❌ No
"hola".toUpperCase() devuelve nuevo string
boolean
❌ No
true, false son fijos
object
✅ Sí
Usa { ...obj, nuevoValor }
array
✅ Sí
Usa [...arr, nuevoItem]

✨ Conclusión

Entender la inmutabilidad te ayuda a escribir código más limpio y predecible — especialmente en frameworks como React, Redux u otros basados en estados.
Empieza con lo básico: usa el spread operator, evita push o asignaciones directas, y pregúntate: ¿Estoy cambiando el original, o creando algo nuevo?