Operadores de comparación
Comparar es preguntarle a JavaScript: “¿estos dos valores se parecen?” o “¿cuál es mayor?”. La respuesta siempre es un booleano: true (verdadero) o false (falso). Esa respuesta es la que luego usan las estructuras if y los bucles while para decidir qué hacer.
Objetivos
Sección titulada «Objetivos»Al terminar esta lección deberías ser capaz de:
- Usar los operadores
>,<,>=y<=. - Explicar la diferencia entre
==y===. - Saber por qué se recomienda usar siempre
===y!==. - Evitar las comparaciones engañosas con textos y
NaN. - Combinar comparaciones con
&&,||y!.
Toda comparación devuelve un booleano
Sección titulada «Toda comparación devuelve un booleano»console.log(10 > 5); // trueconsole.log(10 < 5); // falseconsole.log(10 === 10); // trueconsole.log("hola" === "adiós"); // falseEl resultado es siempre un valor de tipo boolean. Más adelante lo usarás dentro de las decisiones y los bucles.
Operadores de relación (mayor y menor)
Sección titulada «Operadores de relación (mayor y menor)»| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
> |
Mayor que | 7 > 3 |
true |
< |
Menor que | 7 < 3 |
false |
>= |
Mayor o igual | 7 >= 7 |
true |
<= |
Menor o igual | 7 <= 3 |
false |
console.log(22 > 30); // false → no hace calorconsole.log(22 >= 20); // true → está templadoIgualdad: la diferencia clave entre == y ===
Sección titulada «Igualdad: la diferencia clave entre == y ===»Aquí está el punto más importante de la lección. JavaScript tiene dos formas de comparar igualdad:
| Operador | Nombre | Convierte tipos antes de comparar | Ejemplo | Resultado |
|---|---|---|---|---|
== |
Igualdad débil / flexible | Sí | 5 == "5" |
true |
=== |
Igualdad estricta | No | 5 === "5" |
false |
!= |
Desigualdad débil | Sí | 5 != "5" |
false |
!== |
Desigualdad estricta | No | 5 !== "5" |
true |
console.log(5 == "5"); // true → convierte "5" a número y comparaconsole.log(5 === "5"); // false → son de distinto tipo, no hay conversión
console.log(0 == false); // true → conversión inesperadaconsole.log(0 === false); // false → un número no es un booleano
console.log("" == 0); // trueconsole.log("" === 0); // false== intenta “arreglar” los tipos por su cuenta. Eso puede parecer cómodo, pero produce resultados difíciles de predecir. === es claro: mismo valor y mismo tipo.
Comparar textos
Sección titulada «Comparar textos»Los textos se comparan por orden alfabético (en realidad, por el orden de sus caracteres Unicode), no por tamaño ni por valor numérico:
console.log("a" < "b"); // trueconsole.log("casa" > "coche"); // false → "casa" va antesconsole.log("Ana" === "ana"); // false → mayúsculas y minúsculas importanEsto genera un error clásico: comparar números que en realidad son texto.
console.log("10" < "2"); // true → compara carácter a carácter: "1" va antes que "2"console.log(10 < 2); // false → ahora sí son númerosCasos especiales
Sección titulada «Casos especiales»null y undefined
Sección titulada «null y undefined»console.log(null == undefined); // true → excepción del estándarconsole.log(null === undefined); // false → siguen siendo tipos distintosNaN no es igual a nada
Sección titulada «NaN no es igual a nada»console.log(NaN === NaN); // false, ¡ni a sí mismo!console.log(Number.isNaN(NaN)); // true → forma correcta de detectarloCombinar comparaciones con operadores lógicos
Sección titulada «Combinar comparaciones con operadores lógicos»Cuando necesitas varias condiciones a la vez, se usan los operadores lógicos:
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
&& |
Y (ambas deben cumplirse) | 20 >= 18 && 20 < 65 |
true |
|| |
O (basta una) | 20 < 18 || 20 >= 65 |
false |
! |
NO (invierte) | !(20 >= 18) |
false |
console.log(20 >= 18 && true); // trueconsole.log(10 > 5 && 3 < 1); // falseconsole.log(10 > 5 || 3 < 1); // trueconsole.log(!false); // trueErrores frecuentes
Sección titulada «Errores frecuentes»- Usar
=en vez de===: el primero guarda un valor, el segundo compara. Es un bug silencioso. - Confiar en
==: convierte tipos y da resultados inesperados. - Comparar textos como números:
"10" < "2"estrue. - Comparar decimales con
===:0.1 + 0.2 === 0.3esfalsepor el redondeo; compara con una tolerancia pequeña. - Comparar
NaNcon===: usaNumber.isNaN().
Ejercicio
Sección titulada «Ejercicio»Abre la consola y predice el resultado antes de ejecutar cada línea. Después comprueba:
7 >= 7;"7" === 7;"7" !== 7;"manzana" < "pera";"10" > "2";null == undefined;NaN === NaN;15 > 10 && 3 < 1;Para cada una, escribe una frase explicando por qué da ese resultado.
Resumen
Sección titulada «Resumen»- Toda comparación produce
trueofalse. >,<,>=y<=comparan orden;===y!==comparan valor y tipo.==convierte tipos automáticamente y provoca sorpresas: usa siempre===.- Los textos se comparan alfabéticamente, así que convierte con
Number()si vienen de un formulario. NaNnunca es igual a nada; usaNumber.isNaN().&&,||y!permiten combinar varias condiciones.
Siguiente paso: null y undefined.