=== (strict equality) confronta valore e tipo senza conversione. == (loose equality) esegue type coercion prima, il che porta a risultati sorprendenti.
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (strict equality) confronta valore e tipo senza conversione. == (loose equality) esegue type coercion prima, il che porta a risultati sorprendenti.
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
Le regole di coercion non sono ovvie e portano a bug. Ad esempio, [] == ![] è true (un quirk notorio). Raramente vuoi che JavaScript converta silenziosamente i tipi dietro le quinte durante un confronto.
Usa sempre === (e !==). L'unica eccezione comune e intenzionale è il controllo di null o undefined insieme:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
Per tutto il resto, l'uguaglianza stretta mantiene i confronti prevedibili. Per confrontare oggetti hai bisogno di un controllo di deep-equality (si confrontano per riferimento, quindi {a:1} === {a:1} è false).