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:
Se você gostou deste artigo, siga-me no twitter para obter atualizações.