DevPath · Aprende a programar ESPTEN

Operadores y coerción

Coerción de tipos: == vs ===

Coerción de tipos

Bienvenido al campo minado más famoso de JavaScript. Aquí "5" + 1 no da 6, y una comparación inocente puede salirte por donde no esperas. La buena noticia: en cuanto entiendas la regla, dejas de pisar minas y aprendes a desactivarlas.

Coerción es la conversión automática de un tipo a otro que JavaScript hace por su cuenta. Puede ser muy cómoda... o muy confusa si no la entiendes.

El caso famoso: + con strings

El operador + tiene doble personalidad:

console.log(5 + 1);     // 6   → suma de números
console.log("5" + 1);   // "51" → "5" es texto, así que 1 se convierte en "1"

Pero -, *, / solo saben de números

Los demás operadores aritméticos no tienen sentido con texto, así que JavaScript convierte el string a número antes de operar:

console.log("5" - 1); // 4   → "5" se convierte en 5
console.log("5" * 2); // 10
console.log("10" / 2); // 5

Por eso "5" + 1 da "51" pero "5" - 1 da 4. La diferencia está en el operador, no en el dato.

⚠️ TRAMPA CLÁSICA. Aquí tropezamos todos: un dato que llega como texto (por ejemplo, lo que escribe el usuario en un formulario) más un + y, en vez de sumar, JavaScript pega cadenas. "5" + 1 es "51", no 6. Convierte a número tú mismo (con Number(...)) antes de sumar y te ahorras el dolor de cabeza.

== vs ===

console.log(5 === "5"); // false → distinto tipo (number vs string)
console.log(5 == "5");  // true  → "5" se convierte a 5 antes de comparar
console.log(0 == "");   // true  → coerción sorprendente
console.log(null == undefined); // true

Regla de oro: usa siempre === y !==. Evitan sorpresas y hacen tu código predecible. El == se reserva para casos muy concretos.

Has desactivado las minas más famosas de JavaScript. A partir de aquí, cuando veas un == ajeno o un "5" + 1 sabrás exactamente qué está pasando, y eso ya te separa de mucha gente que lleva años sin entenderlo.

Ejemplos

El + frente a los demás operadores

console.log("5" + 1); // "51"
console.log("5" - 1); // 4
console.log("5" * 2); // 10

Igualdad estricta vs débil

console.log(5 === "5"); // false
console.log(5 == "5");  // true
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 →
← Comparación y operadores lógicosVer el módulo →