Lección 09: Operadores de Comparación
🧠 Concepto
Section titled “🧠 Concepto”Los operadores de comparación comparan dos valores y devuelven un booleano (true o false). Son fundamentales para tomar decisiones en nuestros programas.
Operadores disponibles
Section titled “Operadores disponibles”| Operador | Nombre | Ejemplo | Resultado |
|---|---|---|---|
== | Igualdad abstracta | 5 == '5' | true |
=== | Igualdad estricta | 5 === '5' | false |
!= | Desigualdad abstracta | 5 != '5' | false |
!== | Desigualdad estricta | 5 !== '5' | true |
> | Mayor que | 5 > 3 | true |
< | Menor que | 5 < 3 | false |
>= | Mayor o igual que | 5 >= 5 | true |
<= | Menor o igual que | 5 <= 3 | false |
== vs === (La gran diferencia)
Section titled “== vs === (La gran diferencia)”== (igualdad abstracta): compara el valor después de convertir los tipos (coerción).
=== (igualdad estricta): compara el valor y el tipo, sin convertir.
console.log(5 == '5'); // true (convierte '5' a número)console.log(5 === '5'); // false (number vs string)console.log(0 == false); // true (convierte false a 0)console.log(0 === false);// false (number vs boolean)console.log('' == false); // true (convierte ambos)console.log('' === false);// falseLa regla de oro: SIEMPRE usa ===
Section titled “La regla de oro: SIEMPRE usa ===”El == causa comportamientos inesperados (coerción implícita) que son fuente de errores difíciles de encontrar.
// Cosas raras que pasan con ==console.log(null == undefined); // trueconsole.log(null === undefined); // falseconsole.log('' == 0); // trueconsole.log('\t' == 0); // trueconsole.log('\n' == 0); // trueComparación de strings
Section titled “Comparación de strings”Las cadenas se comparan carácter por carácter según su valor Unicode (orden lexicográfico).
console.log('a' < 'b'); // trueconsole.log('abeja' < 'agua'); // true (compara carácter por carácter)console.log('A' < 'a'); // true (las mayúsculas tienen menor código Unicode)💻 Ejemplo
Section titled “💻 Ejemplo”let edad = 18;
console.log('edad >= 18:', edad >= 18); // trueconsole.log('edad > 18:', edad > 18); // falseconsole.log('edad === 18:', edad === 18); // trueconsole.log('edad === "18":', edad === '18'); // false
// La diferencia clavelet num = 5;let str = '5';
console.log('num == str:', num == str); // true (peligroso)console.log('num === str:', num === str); // false (seguro)
// Evita estos erroresconsole.log('' == 0); // trueconsole.log(' ' == 0); // trueconsole.log([] == ![]); // true 🫣📝 Ejercicio
Section titled “📝 Ejercicio”- Crea un archivo
operadores-comparacion.js. - Declara
let a = 10ylet b = '10'. - Compara con
==y===y explica por qué dan resultados diferentes. - Prueba todas las comparaciones:
>,<,>=,<=. - Compara tu nombre con el de un compañero usando strings.
let a = 10;let b = '10';
console.log('a == b:', a == b);console.log('a === b:', a === b);console.log('a != b:', a != b);console.log('a !== b:', a !== b);console.log('a > b:', a > b);console.log('a < b:', a < b);console.log('a >= b:', a >= b);console.log('a <= b:', a <= b);
// String comparisonconsole.log('"zorro" > "ágil":', 'zorro' > 'ágil');console.log('"JavaScript" === "Javascript":', 'JavaScript' === 'Javascript');⚠️ Nota
Section titled “⚠️ Nota”Nunca uses == o != en código profesional. Siempre prefiere === y !==. Esto elimina la coerción implícita y hace tu código más predecible. La única excepción es cuando explícitamente quieras comparar null y undefined como equivalentes, pero aún así es más claro usar otras técnicas.
Para comparar strings ignorando mayúsculas, convierte ambos a minúsculas primero:
let usuario = 'Admin';if (usuario.toLowerCase() === 'admin') { console.log('Acceso concedido');}