Articolo originale: JavaScript Triple Equals Sign VS Double Equals Sign – Comparison Operators Explained with Examples
Probabilmente, in JavaScript hai visto dei segni di uguale doppi e tripli. Ma che cosa significano?
In breve: ==
effettua implicitamente una conversione di tipo e ===
non converte il tipo.
Il doppio uguale (==
) verifica soltanto l'uguaglianza dei valori. Effettua implicitamente una conversione di tipo (type coercion). Questo vuol dire che prima di confrontare i valori, converte i tipi delle variabili in modo che corrispondano.
Al contrario, il triplo uguale (===
) non effettua conversioni di tipo. Verifica se le variabili confrontate hanno lo stesso valore e sono dello stesso tipo.
Ok – proviamo a comprendere meglio la differenza con alcuni esempi. Cerca di capire quale sarà l'output di ognuno.
Esempio 1:
const foo = "test"
const bar = "test"
console.log(foo == bar) //true
console.log(foo === bar) //true
Il valore e il tipo di foo
e bar
sono uguali. Di conseguenza il risultato è true
per entrambi.
Esempio 2:
const number = 1234
const stringNumber = '1234'
console.log(number == stringNumber) //true
console.log(number === stringNumber) //false
Il valore di number
e di stringNumber
sembra lo stesso. Tuttavia, il tipo di number
è number
e il tipo di stringNumber
è string
. Anche se i valori sono gli stessi, non lo è il tipo. Dunque il confronto tramite ==
restituisce true
, ma quando il confronto avviene per il valore e il tipo, il risultato è false
.
Esempio 3:
console.log(0 == false) //true
console.log(0 === false) //false
Spiegazione: stesso valore, tipo diverso. Conversione di tipo.
Questo è un caso interessante. Il valore 0
se confrontato con false
risulta uguale. Ciò avviene perché 0
e false
hanno lo stesso valore per JavaScript, ma se confrontati per valore e tipo, il risultato è falso perché 0
è di tipo number
e false
è di tipo boolean
.
Esempio 4:
const str = ""
console.log(str == false) //true
console.log(str === false) //false
Il valore di una stringa vuota e false
sono uguali in JavaScript. Quindi, ==
restituisce true
. Tuttavia il loro tipo è diverso e quindi ===
restituisce false
.
Quando dovresti usare ==
e quando ===
?
Se hai dubbi, utilizza ===
. Ti eviterà un sacco di potenziali bug.
Se ti trovi in un caso di utilizzo in cui puoi essere tollerante riguardo al tipo di dato in entrata, allora usa ==
. Ad esempio, se una API accetta sia "true"
che true
dal client, usa ==
. In breve, non usare ==
a meno che non ci sia una ragione per farlo.
Ecco un'utile tabella della verità come riferimento, in cui puoi vedere quanto è complicata l'uguaglianza in JavaScript:

Se ti è piaciuto questo articolo, seguimi su twitter per altri contenuti.