JavaScript === vs ==
-
Operatore di uguaglianza sciolto (
==
) in JavaScript -
Operatore di uguaglianza rigorosa (
===
) in JavaScript
Gli operatori di confronto ci aiutano a determinare se due variabili sono uguali o se seguono un criterio specificato. Se i risultati del confronto sono favorevoli, restituisce true
; in caso contrario, restituisce false
. Questo tutorial spiega l’argomento più confuso tra gli operatori di confronto e insegna quando utilizzare l’operatore uguale a quale (==
o ===
).
Un singolo uguale a =
è abbastanza diverso da doppio uguale a ==
e triplo uguale a ===
perché è un’operazione di assegnazione e sono operatori di confronto. Pertanto, la confusione è generalmente tra ==
e ===
.
Operatore di uguaglianza sciolto (==
) in JavaScript
L’operatore ==
o operatore di uguaglianza è anche chiamato operatore di confronto astratto. Si chiama abstract perché riguarda solo il valore e non il tipo della variabile. L’operatore ==
esegue la conversione dei valori delle variabili nello stesso tipo (tipo coercizione) prima di confrontarli tra loro e restituisce true se gli operandi convertiti sono uguali. Poiché l’operatore deve eseguire la conversione del tipo, tende ad essere un po’ più lento dell’operatore ===
.
Ora, per capire quando usare quale operatore, dobbiamo prima capire un po’ la coercizione del tipo. È di due tipi:
- Coercizione esplicita: viene eseguita in modo esplicito tramite codice utilizzando metodi incorporati. Ad esempio: per convertire una stringa
"42"
in un numero, dobbiamo scrivereNumber("42")
. In questo modo, utilizziamo il metodo di conversione di tipo esplicitoNumber()
per convertire una stringa in un numero. - Coercizione implicita: viene eseguita implicitamente dalla lingua. Di solito viene eseguito quando utilizziamo due diversi tipi di operando con un operatore. Ad esempio: se eseguiamo
1 + ""
. C’è un numero e una stringa che non possono essere aggiunti direttamente, quindi il tipo JavaScript converte il numero in stringa poiché è l’unico modo in cui possono essere aggiunti e restituisce una stringa"1"
.
23 == '23' // returns true
true + false == 1 // returns true
undefined ==
null // returns true
[] == 0 // returns true
Operatore di uguaglianza rigorosa (===
) in JavaScript
L’operatore ===
o operatore di identità è anche chiamato operatore di confronto rigoroso. Viene chiamato rigoroso perché restituisce true solo quando il tipo e il valore di entrambi gli operandi sono gli stessi. Non effettua alcun tipo di conversione; quindi, tende ad essere più veloce dell’operatore ==
.
true === true // returns true
true === 1 // returns false
Quindi, la decisione di scegliere l’operatore ==
o ===
richiede una coercizione di tipo. Se uno non ha familiarità con la coercizione di tipo, dovrebbe attenersi all’operatore di uguaglianza rigorosa.
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn