=== (igualdade estrita) compara valor e tipo sem conversão. == (igualdade flexível) realiza coerção de tipo primeiro, o que leva a resultados surpreendentes.
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (igualdade estrita) compara valor e tipo sem conversão. == (igualdade flexível) realiza coerção de tipo primeiro, o que leva a resultados surpreendentes.
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
As regras de coerção não são óbvias e levam a bugs. Por exemplo, [] == ![] é true (uma particularidade notória). Você raramente deseja que JavaScript converta tipos silenciosamente por trás dos panos durante uma comparação.
Sempre use === (e !==). A uma exceção comum e intencional é verificar null ou undefined juntos:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
Para tudo mais, a igualdade estrita mantém as comparações previsíveis. Para comparar objetos, você precisa de uma verificação de igualdade profunda (eles se comparam por referência, então {a:1} === {a:1} é false).