Módulo 3 · Control de Flujo I: Condicionales

Operadores de comparación

Mayor, menor, igual y distinto: cómo se comparan valores en código y cuál es la diferencia real entre == y ===, el error de tipos más común al empezar.

Definición rápida

Los operadores de comparación evalúan la relación entre dos valores y devuelven un booleano: mayor, menor, igual o distinto.

Los operadores de comparación son los que producen los booleanos con los que un programa decide. Son seis y se aprenden en dos minutos, pero uno de ellos concentra una cantidad desproporcionada de errores silenciosos.

Los seis operadores

5 > 3;     // true   mayor que
5 < 3;     // false  menor que
5 >= 5;    // true   mayor o igual
5 <= 4;    // false  menor o igual
5 === 5;   // true   igual en valor y tipo
5 !== 3;   // true   distinto

Todos devuelven true o false, nunca otra cosa.

=== frente a ==

5 === "5";   // false  → distinto tipo
5 == "5";    // true   → convierte antes de comparar

== aplica conversiones automáticas antes de comparar, y esas conversiones tienen casos que nadie recuerda de memoria (0 == "" es true). El resultado es código que funciona con los datos de prueba y falla con datos reales.

Regla sin excepciones prácticas al empezar: usa siempre === y !==. Si necesitas comparar un texto con un número, convierte de forma explícita:

const entrada = "42";              // suele venir de un formulario
if (Number(entrada) === 42) { }

El error de escribir = en lugar de ===

let nota = 3;

if (nota = 10) {   // asigna 10 y entra siempre
  console.log("Perfecto");
}

No da error, así que el programa simplemente se comporta de forma incomprensible. Si un condicional entra cuando no debería, esto es lo primero que hay que revisar.

Comparar cosas que no son números

"ana" === "Ana";                            // false: distingue mayúsculas
"Ana".toLowerCase() === "ana";              // true
0.1 + 0.2 === 0.3;                          // false: imprecisión decimal

Los decimales arrastran una imprecisión mínima al almacenarse en binario, así que comparar resultados de cálculos con decimales requiere redondear antes. Ver operadores aritméticos.

Y una advertencia útil: === sobre arrays u objetos no compara su contenido, sino si son exactamente el mismo dato en memoria. [1, 2] === [1, 2] es false.

Dónde se practica

Saber los símbolos es lo fácil. Lo que cuesta es elegir el correcto en los casos frontera: si el enunciado dice «a partir de 18 años», la comparación es >= 18 y no > 18, y una batería de tests con el valor 18 exacto lo detecta al instante. Ese tipo de precisión se entrena con ejercicios autocorregidos en el módulo 3 del curso; puedes ver el temario y empezar por los módulos gratuitos.

Preguntas frecuentes

¿Cuál es la diferencia entre == y ===?

== compara solo el valor y convierte tipos antes, así que "5" == 5 es true. === compara valor y tipo, así que "5" === 5 es false. Usa siempre ===.

¿Por qué = no sirve para comparar?

Porque = asigna un valor. Escribir if (x = 5) guarda 5 en x y la condición se cumple siempre. Para comparar hacen falta tres iguales: ===.

¿Puedo comparar dos textos?

Sí, con === para saber si son idénticos. Ten en cuenta que distingue mayúsculas: "Ana" === "ana" es false. Para ignorar el caso, compara ambos en minúsculas.