Skip to content

Lección 09: Operadores de Comparación

Los operadores de comparación comparan dos valores y devuelven un booleano (true o false). Son fundamentales para tomar decisiones en nuestros programas.

OperadorNombreEjemploResultado
==Igualdad abstracta5 == '5'true
===Igualdad estricta5 === '5'false
!=Desigualdad abstracta5 != '5'false
!==Desigualdad estricta5 !== '5'true
>Mayor que5 > 3true
<Menor que5 < 3false
>=Mayor o igual que5 >= 5true
<=Menor o igual que5 <= 3false

== (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);// false

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); // true
console.log(null === undefined); // false
console.log('' == 0); // true
console.log('\t' == 0); // true
console.log('\n' == 0); // true

Las cadenas se comparan carácter por carácter según su valor Unicode (orden lexicográfico).

console.log('a' < 'b'); // true
console.log('abeja' < 'agua'); // true (compara carácter por carácter)
console.log('A' < 'a'); // true (las mayúsculas tienen menor código Unicode)
let edad = 18;
console.log('edad >= 18:', edad >= 18); // true
console.log('edad > 18:', edad > 18); // false
console.log('edad === 18:', edad === 18); // true
console.log('edad === "18":', edad === '18'); // false
// La diferencia clave
let num = 5;
let str = '5';
console.log('num == str:', num == str); // true (peligroso)
console.log('num === str:', num === str); // false (seguro)
// Evita estos errores
console.log('' == 0); // true
console.log(' ' == 0); // true
console.log([] == ![]); // true 🫣
  1. Crea un archivo operadores-comparacion.js.
  2. Declara let a = 10 y let b = '10'.
  3. Compara con == y === y explica por qué dan resultados diferentes.
  4. Prueba todas las comparaciones: >, <, >=, <=.
  5. 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 comparison
console.log('"zorro" > "ágil":', 'zorro' > 'ágil');
console.log('"JavaScript" === "Javascript":', 'JavaScript' === 'Javascript');

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');
}