Igual ao dobro (==) verifica apenas a igualdade de valor. Ele inerentemente digita coerção. Isso significa que antes de verificar os valores, ele converte os tipos das variáveis ​​para coincidirem.

Por outro lado, Triple Equals (===) não executa coerção de tipo. Ele verificará se as variáveis ​​que estão sendo comparadas têm o mesmo valor E o mesmo tipo.

OK - então vamos ajudá-lo a entender melhor a diferença através de alguns exemplos. Para cada uma delas, considere qual será o resultado dessas instruções.

Exemplo 1:

const foo = "test" const bar = "test"  console.log(foo == bar) //trueconsole.log(foo === bar) //true                            

O valor e o tipo de ambos foo e bar é igual. Portanto, o resultado é true para ambos.

Exemplo 2: ‌

const number = 1234 const stringNumber = '1234'  console.log(number == stringNumber) //trueconsole.log(number === stringNumber)  //false                                   

O valor de number e stringNumber parece semelhante aqui. No entanto, o tipo de number é Number e tipo de stringNumber é string. Mesmo que os valores sejam iguais, o tipo não é o mesmo. Portanto, um == verificar retornos true, mas quando marcado por valor e tipo, o valor é false.

Exemplo 3:

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

Razão: mesmo valor, tipo diferente. Coerção de tipo

Este é um caso interessante. O valor de 0 quando verificado com false é igual. É assim porque 0 e false têm o mesmo valor para JavaScript, mas quando marcado para o tipo e valor, o valor é falso porque 0 é um number e false é boolean.

Exemplo 4:

const str = ""console.log(str == false) //trueconsole.log(str === false) //false

O valor da cadeia vazia e false é o mesmo em JavaScript. Conseqüentemente, == retorna verdadeiro. No entanto, o tipo é diferente e, portanto, === retorna falso.

Quando você deve usar == e quando você deve usar ===?

Em caso de dúvida, use ===. Isso o salvará de uma tonelada de possíveis bugs.

Se você estiver suportando um caso de uso em que possa ser um pouco tolerante com o tipo de dados recebidos, use ==. Por exemplo, se uma API aceitar ambos "true" e true do cliente, use ==. Em suma, não use == a menos que você tenha um forte caso de uso para isso.

Aqui está uma útil tabela de verdade sobre JavaScript para sua referência e para mostrar o quão complicada é a igualdade no JavaScript:

image 6
Fonte: https://dorey.github.io/JavaScript-Equality-Table/

Se você gostou deste artigo, siga-me no twitter para obter atualizações.