Gli operatori di confronto confrontano i valori di due operandi e valutano se l'affermazione che formano è true o false. L'esempio seguente utilizza l'operatore di uguaglianza rigorosa (===) per confrontare due operandi: l'espressione 2 + 2 e il valore 4. Poiché il risultato dell'espressione e il valore numerico 4 sono uguali, questa espressione restituisce true:
2 + 2 === 4
> true
Coercizione e uguaglianza di tipo
Due degli operatori di confronto più utilizzati sono == per l'uguaglianza approssimativa
e === per l'uguaglianza rigorosa. == esegue un confronto approssimativo tra due valori forzando gli operandi a tipi di dati corrispondenti, se possibile. Ad esempio, 2 == "2" restituisce true, anche se il confronto viene eseguito tra un valore numerico e un valore stringa.
2 == 2
> true
2 == "2"
> true
Lo stesso vale per !=, che restituisce true solo se gli operandi confrontati non sono approssimativamente uguali.
2 != 3
> true
2 != "2"
> false
I confronti rigorosi che utilizzano === o !== non eseguono la coercizione di tipo. Affinché un
confronto rigoroso restituisca il valore true, i valori confrontati devono avere lo stesso
tipo di dati. Per questo motivo, 2 == "2" restituisce true, ma 2 === "2"
restituisce false:
2 === 3
> false
2 === "2"
> false
Per rimuovere qualsiasi ambiguità che potrebbe derivare dalla coercizione automatica, utilizza === se possibile.
| Operatore | Descrizione | Utilizzo | Risultato |
|---|---|---|---|
| === | Esattamente uguale | 2 === 2 | true |
| !== | Non strettamente uguale | 2 !== "2" | true |
| == | Uguale (o "approssimativamente uguale") | 2 == "2" | true |
| != | Non uguale | 2 != "3" | true |
| > | Maggiore di | 3 > 2 | true |
| >= | Maggiore o uguale a | 2 >= 2 | true |
| < | Minore di | 2 < 3 | true |
| <= | Minore o uguale a | 2 <= 3 | true |
Valori veri e falsi
Tutti i valori in JavaScript sono implicitamente true o false e possono essere forzati al valore booleano corrispondente, ad esempio utilizzando il comparatore "approssimativamente uguale". Un insieme limitato di valori viene forzato su false:
0nullundefinedNaN- Una stringa vuota (
"")
Tutti gli altri valori vengono forzati a true, incluse le stringhe contenenti uno o più caratteri e tutti i numeri diversi da zero. Questi valori sono comunemente chiamati valori "veri" e
"falsi".
"My string" == true
> true
100 == true
> true
0 == true
> false
Operatori logici
Utilizza gli operatori AND (&&), OR (||) e NOT (!) logici per controllare il flusso di uno script in base alla valutazione di due o più istruzioni condizionali:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Un'espressione logica NOT (!) nega il valore vero o falso di un operando, restituendo true se l'operando restituisce false e false se l'operando restituisce true:
true
> true
!true
> false
!false
> true
L'utilizzo dell'operatore logico NON (!) davanti a un altro tipo di dati, ad esempio un numero o una stringa, forza il valore in un booleano e inverte il valore vero o falso del risultato.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
È prassi comune utilizzare due operatori NOT per forzare rapidamente i dati al valore booleano corrispondente:
!!"string"
> true
!!0
> false
Gli operatori AND e OR logici non eseguono alcuna coercizione da soli. Rimontano il valore di uno dei due operandi in fase di valutazione, con l'operando scelto determinato da questa valutazione.
L'operatore AND logico (&&) restituisce il primo dei due operandi solo se questo viene valutato come false e, in caso contrario, il secondo operando. Nei confronti che
si valutano in valori booleani, restituisce true solo se gli operandi su entrambi i lati
dell'operatore AND logico si valutano in true. Se uno dei lati restituisce false, viene visualizzato false.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Quando && viene utilizzato con due operandi non booleani, il primo operando viene restituito immutato se può essere forzato in false. Se il primo operando può essere forzato
in true, il secondo operando viene restituito invariato:
false && "My string"
> false
null && "My string"
> null
"My string" && false
> false
"My string" && "My second string"
> "My second string"
2 === 2 && "My string"
> "My string"
L'operatore OR logico (||) restituisce il primo dei due operandi solo se questo viene valutato come true e, in caso contrario, il secondo operando. Nei confronti che
risultano in valori booleani, significa che restituisce true se uno degli operandi
risulta in true e, se nessuno dei due operandi risulta in true, restituisce
false:
true || false
> true
false || true
> true
true || true
> true