Operadores de Comparación
Conoces los operadores de comparación de la clase de matemáticas, pero vamos a refrescar tu conocimiento:
Operador mayor que (a > b) devuelve true si el operando de la izquierda es mayor que el operando de la derecha.
Sintaxis:
a > b
Ejemplo del operador mayor que:
Operador menor que (a < b) devuelve true si el operando de la izquierda es menor que el operando de la derecha.
Sintaxis:
a < b
Ejemplo del operador menor que:
Operador mayor o igual que (a >= b) devuelve true si el operando de la izquierda es mayor o igual que el operando de la derecha.
Sintaxis:
a >= b
Ejemplo del operador mayor o igual que:
Operador menor o igual que (a <= b) devuelve true si el operando de la izquierda es menor o igual que el operando de la derecha.
Sintaxis:
a <= b
Ejemplo del operador menor o igual que:
El operador de igualdad (a == b) convierte los operandos si no son del mismo tipo, luego aplica una comparación estricta. Si ambos operandos son objetos, JavaScript compara las referencias internas que son iguales cuando los operandos se refieren al mismo objeto en memoria.
Sintaxis:
a == b
Ejemplo del operador de igualdad:
Si los operandos no son iguales, el operador de desigualdad (!=) devuelve true. Cuando dos operandos no son del mismo tipo, JavaScript intenta convertir los operandos a un tipo apropiado para la comparación.
Si ambos operandos son objetos, JavaScript compara referencias que no son iguales, cuando los operandos se refieren a diferentes objetos en memoria.
Sintaxis:
a != b
Ejemplo del operador de desigualdad:
Boolean es el resultado
Una comparación devuelve un valor como cualquier otro operador. El valor, en este caso, es un boolean.
- true es "sí", "correcto" o "la verdad";
- false es "no", "incorrecto" o "no es la verdad".
El resultado de una comparación puede asignarse a una variable, como cualquier valor:
Comparación de cadenas
JavaScript utiliza el orden "diccionario" o "lexicográfico" para ver si una cadena es mayor que otra. En otras palabras, las cadenas se comparan letra por letra.
Ejemplo de la comparación de cadenas:
En los ejemplos la comparación 'Z' > 'A' llega a un resultado en el primer paso mientras que las cadenas "Want" y "Walk" se comparan carácter por carácter:
- W es igual a W.
- a es igual a a.
- n es mayor que l.
Comparación de diferentes tipos
Para comparar valores de diferentes tipos, JavaScript convierte los valores a números.
Para los valores booleanos, true se convierte en 1, false se convierte en 0.
Igualdad estricta
Un problema con la comprobación de igualdad regular == es que no puede diferenciar 0 de false:
Nos encontramos con lo mismo con una cadena vacía:
Comparación con null y undefined
Un comportamiento no intuitivo es cuando null o undefined se comparan con otros valores. Para una comprobación de igualdad estricta ===. Estos valores son diferentes, ya que cada uno de ellos es de un tipo diferente.
Para una comprobación no estricta ==
Estos dos son una "pareja dulce", significa que se igualan entre sí.
La diferencia entre == y ===
JavaScript tiene dos formas visiblemente similares, pero muy diferentes de probar la igualdad:
== (Operador de doble igual): el operador de igualdad o comparación abstracta
=== (Operador de triple igual): el operador de identidad o comparación estricta
Aquí están las diferencias entre == y ===:
- antes de mostrar la comparación == convierte los valores de las variables al mismo tipo;
- === no hace ninguna conversión de tipo y devuelve true solo si ambos valores y tipos son idénticos para las dos variables que se comparan.
Para matemáticas y otras comparaciones < > <= >=
Null/undefined se convierten en números, aquí null se convierte en 0, undefined se convierte en NaN.
Te presentamos algunas cosas divertidas que ocurren cuando aplicamos estas reglas. Y también, cómo no caer en una trampa con ellos.
Resultado extraño: null vs 0
Ejemplo de la comparación de null con un cero:
Matemáticamente, eso es extraño. El último resultado dice que "null es mayor o igual a cero", significa que en una de las comparaciones anteriores debe ser verdadero, pero ambas son falsas.
La razón principal es que una comprobación de igualdad == y comparaciones > < >= <= funcionan de diferente manera: las comparaciones convierten null en un número, tratándolo como 0. Esa es la razón por la que (3) null >= 0 es verdadero y (1) null > 0 es falso.
Pero por otro lado, la comprobación de igualdad == para undefined y null está definido sin ninguna conversión. Se igualan entre sí y no se igualan a nada más, por eso (2) null == 0 es falso.
Un undefined incomparable
No podemos comparar el valor undefined con otros valores:
Las razones por las que obtenemos estos resultados son:
- Las comparaciones (1) y (2) devuelven falso, ya que undefined se convierte en NaN, es un valor numérico especial que devuelve falso para todas las comparaciones.
- La comprobación de igualdad (3) devuelve falso, ya que aquí undefined sólo es igual a null, undefined y ningún otro valor.
Hora del Cuestionario: ¡Pon a Prueba Tus Habilidades!
¿Listo para desafiar lo que has aprendido? Sumérgete en nuestros cuestionarios interactivos para una comprensión más profunda y una forma divertida de reforzar tu conocimiento.