Operadores de comparación de igualdad estricta

Jose Uscanga
Jan 14 · 4 min read

Hola a tod@s. bienvenidos a otro capítulo mas de aprendiendo JavaScript #365DaysOfCode espero que hasta ahora valla genial.

Hace unos días me di a la tarea de ver a más detalle, el material que expongo día a día con ustedes y llegue a la conclusión de que no incluí una introducción adecuada pero importante de que es JavaScript.

Considero que es importante saberlo y dentro de la semana prometo hacer una Introducción de JavaScript donde hablaremos de las bases y un poco historia, por otra parte me percate que a un no he mostrado como desarrollar los ejemplos y tampoco que editor de texto usaremos para hacer nuestro código funcional 🤦‍♂️, soy nuevo en esto , pero hare mi mejor esfuerzo por mejorar.

Bueno regresando al tema del día, Operadores de comparación de igualdad estricta.

JavaScript tiene dos formas de comparar sí dos tipos de datos son mayores, iguales, menores o diferentes. En el capítulo anterior vimos la igualdad común (==) donde alert( 0 == false ) // true es verdadero, aquí si nos damos cuenta estamos comparando un Number con un Boolean, pero como vimos JavaScript convierte el tipo de dato false en un Number 0 == 0

Lo mismo sucede con una cadena vacía.

alert( '' == false ) // true - 0 == 0

Donde tanto la cadena ‘ ‘ y false son convertidos en 0 de manera implícita. recuerdas como JavaScript convierte los tipos de datos, si no lo recuerdas aquí te muestro.

El operador de igualdad estricta (===)

Un operador de igualdad estricta ===verifica la igualdad sin conversión de tipo.

alert( 0 === false ); // false, Por que son de diferente tipo

En otras palabras, si ay bson de diferentes tipos, a === binmediatamente regresa falsesin intentar convertirlos. En nuestro ejemplo intentamos comparar un Number con un Boolean.

El operador de no igualdad estricta(diferente) (!==)

También hay un operador de “de no igualdad estricta” !==análogo a != (diferente).

alert( 0 !== false ) // true

Comparación con nulo (null) e indefinido (undefined)

Hay un comportamiento no intuitivo cuando nullo undefinedse compara con otros valores.

Para un estricto control de igualdad ===

Estos valores son diferentes, porque cada uno de ellos es de un tipo diferente.

alert( null === undefined ) // false

Para un control no estricto ==

alert( null == undefined ) // true

Para matemáticas y otras comparaciones < > <= >=

null/undefinedse convierten en números: si nullse convierte 0, mientras queundefinedse convierte NaN.

Un extraño: null vs 0

alert( null > 0 )  // false
alert( null == 0 ) // false
alert( null >= 0 ) // true

Matemáticamente, eso es extraño. El último resultado indica que “ nulles mayor o igual que cero", por lo que en una de las comparaciones anteriores debe ser true, pero ambos son falsos.

La razón es que un control de igualdad ==y comparaciones > < >= <= funcionan de manera diferente. Las comparaciones convierten null en un número, tratándolo como 0

Undefined el chico malo

El valor undefinedno debe compararse con otros valores:

alert( undefined > 0 )  // false (1)
alert( undefined < 0 ) // false (2)
alert( undefined == 0 ) // false (3)

Obtenemos estos resultados porque:

  • Comparaciones (1)y (2)retorna falseporque undefinedse convierte a NaNy NaNes un valor numérico especial que devuelve falsepara todas las comparaciones.
  • La comprobación de la igualdad del ejemplo(3)es falseporqué undefinedsólo se iguala null, undefined
  • undefined no debe de comparase con ningún otro valor.

Lo sé, esto es engorroso y complicado 😵, ¿Deberíamos aprenderlo y recordarlo todo el tiempo?. Bueno en realidad no, esto sera gradual, experimentaras estos resultados con forme avanzas y desarrolles. pero a mi experiencia te puedo dejar las siguientes observaciones a considerar.

  • Simplemente trate cualquier comparación, undefined/nullexcepto la estricta igualdad, ===con un cuidado excepcional.
  • No use comparaciones >= > < <=con una variable que puede ser null/undefined, a menos que esté realmente seguro de lo que está haciendo.
  • Verifícalos siempre los resultados por separados, antes de agregarlo a tu código.

Una buena practica en el mundo de JavaScript es que jamas uses la igual común == , siempre debes de usar la igual estricta en comparaciones ===

Hemos terminado por hoy, esperando verlos mañana con un nuevo tema, trabajare arduo para darte esa introducción de JavaScript que es necesario y al igual mostrarte como configurar tu entorno de desarrollo para que practiques. Mientras tanto ten un buen día 👨‍💻.


“Personalmente, estoy entusiasmado de aprender JavaScript a profundidad, y me gustaría que lo hiciéramos juntos, así que te invito al reto #365DaysOfCode. ¡Ayudémonos! toda retroalimentación es bienvenida ayudaría mucho en nuestro aprendizaje. Así que te espero en el siguiente capitulo, donde hablaremos sobre Una breve introducción a JavaScript”.

Hasta pronto.

José Uscanga @jousmo

Mis referencias:

JavaScript Info 🤓

MDN Web Docs 😎

Jose Uscanga

Written by

Full Stack JavaScript, Desarrollador de Apps - Networking CCNA Amante de lo inesperado e incierto.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade