Puede que hayas visto doble y triple signo igual en JavaScript. Pero, ¿qué significan?

Bien, en resumen: == convierte el tipo inherentemente y === no convierte tipo.

Doble igual (==) solo verifica igualdad de valores. Hace coerción de tipos inherentemente. Esto significa que antes de verificar los valores, convierte los tipos de las variables para que coincidan.

Por el otro lado, Triple igual (===) no hace coerción de tipos. Este verificará que las variables que estén siendo comparadas tengan el mismo valor Y el mismo tipo de variable.

Bien - te ayudaré a que entiendas mejor la diferencia a través de algunos ejemplos. Para cada uno, considera qué arrojaría cada sentencia.

Ejemplo 1:

const foo = "prueba" 
const bar = "prueba"  

console.log(foo == bar) //true
console.log(foo === bar) //true

El valor y el tipo de foo y bar son los mismos. Por lo tanto, el resultado es true (verdadero) en ambos.

Ejemplo 2:‌

const numero = 1234 
const numeroComoCadenaDeTexto = '1234'  

console.log(numero == numeroComoCadenaDeTexto) //true
console.log(numero === numeroComoCadenaDeTexto)  //false

El valor de numero y numeroComoCadenaDeTexto se ven similares aquí. Sin embargo, el tipo de numero es Numero y el tipo de numeroComoCadenaDeTexto es Cadena. Incluso si los valores son el mismo, el tipo no es el mismo. De ahí que una verificación con == devuelva true, pero cuando se comprueba tanto el valor y el tipo, arroja false (falso).

Ejemplo 3:

console.log(0 == false) //true
console.log(0 === false) //false                  

Razón: mismo valor, diferente tipo. Coerción de tipos.

Este es un caso interesante. El valor de 0 cuando se verifica con false es el mismo. Lo es porque 0 y false tienen el mismo valor para JavaScript, pero cuando se verifica el tipo y el valor, arroja falso porque 0 es un numero y false es de tipo Booleano.

Ejemplo 4:

const str = ""

console.log(str == false) //true
console.log(str === false) //false

El valor de la cadena de texto vacía y false es el mismo en JavaScript. De ahí que == devuelva verdadero. Sin embargo, el tipo es diferente, por lo que === devuelve falso.

¿Cuándo debes usar == y cuando ===?

Si tienes dudas, usa ===. Esto te salvará de muchos errores potenciales.

Si estás trabajando en un caso de uso donde puedes ser un poco permisivo respecto al tipo de datos entrantes, entonces usa ==. Por ejemplo, si una API le acepta ambos "true" y true al cliente, usa ==. En resumen, no uses == a no ser que tengas un caso de uso bastante sólido.

Aquí te presento una útil tabla de verdad de JavaScript para tu referencia y también quiero mostrarte lo complicado que es la igualdad en JavaScript:

Fuente: https://dorey.github.io/JavaScript-Equality-Table/

Si disfrutaste este artículo, asegúrate de seguirme en mi Twitter.

Traducido del artículo - JavaScript Triple Equals Sign VS Double Equals Sign – Comparison Operators Explained with Examples de Shruti Kapoor