HOWTO · JavaScript
JavaScript === vs ==
Questo tutorial insegna quando usare quale operatore uguale(== o ===).
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.