Gli operatori di confronto confrontano i valori di due operandi e valutano se l'istruzione che formano è true
o false
. L'esempio seguente utilizza l'operatore di uguaglianza rigida (===
) 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 del tipo
Due degli operatori di confronto più utilizzati sono ==
per uguaglianza debole
e ===
per uguaglianza rigorosa. ==
esegue un confronto ampio tra due valori forzando gli operandi a tipi di dati corrispondenti, se possibile. Ad
esempio, 2 == "2"
restituisce true
, anche se viene effettuato il confronto
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 leggermente uguali.
2 != 3
> true
2 != "2"
> false
I confronti rigorosi utilizzando ===
o !==
non eseguono la coercizione dei tipi. Affinché un confronto rigoroso venga valutato con 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 ===
quando
possibile.
Operatore | Descrizione | Utilizzo | Risultato |
---|---|---|---|
=== | Strettamente uguale | 2 === 2 | true |
!== | Non strettamente uguale | 2 !== "2" | true |
== | Uguale (o "assolutamente uguale") | 2 == "2" | true |
!= | Diverso da | 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 |
Verità e falsificazione
Tutti i valori in JavaScript sono implicitamente true
o false
e possono essere forzati al valore booleano corrispondente, ad esempio utilizzando il confronto "assolutamente uguale". Un insieme limitato di valori costringe a false
:
0
null
undefined
NaN
- Una stringa vuota (
""
)
Tutti gli altri valori corrispondono a true
, incluse le stringhe contenenti uno o più
caratteri e tutti i numeri diversi da zero. Questi sono comunemente chiamati valori "verità" e
"falsi".
"My string" == true
> true
100 == true
> true
0 == true
> false
Operatori logici
Utilizza gli operatori logici AND (&&
), OR (||
) e NOT (!
) 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 veritiero o falso di un operando, valutando in true
se l'operando restituisce false
e false
se l'operando restituisce true
:
true
> true
!true
> false
!false
> true
Se utilizzi l'operatore logico NOT (!
) davanti a un altro tipo di dati, come un numero o una stringa, questo valore viene forzato in un valore booleano e viene invertito il valore reale o falso del risultato.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
È pratica comune utilizzare due operatori NOT per forzare rapidamente i dati al valore booleano corrispondente:
!!"string"
> true
!!0
> false
Gli operatori logici AND e OR non eseguono coercizioni indipendenti. Restituisce il valore di uno dei due operandi valutati, con l'operando scelto determinato da questa valutazione.
L'operatore AND logico (&&
) restituisce il primo dei due operandi solo se restituisce false
e il secondo operando in caso contrario. Nei confronti che valutano in base a valori booleani, restituisce true
solo se gli operandi su entrambi i lati dell'operatore logico AND hanno valore true
. Se una delle parti restituisce false
, restituisce 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
invariato se può essere forzato a false
. Se il primo operando può essere forzato a 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 logico OR (||
) restituisce il primo dei due operando solo se restituisce true
e il secondo operando in caso contrario. Nei confronti che
valutano in base a valori booleani, questo significa che viene restituito true
se uno o più degli operandi
valuta in true
, mentre se nessuno dei due lati restituisce true
, restituisce
false
:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Quando utilizzi ||
con due operandi non booleani, restituisce il primo operando invariato se potrebbe essere forzato a true
. Se il primo operando può essere forzato a false
, il secondo operando viene restituito invariato:
false || "My string"
> "My string"
null || "My string"
> "My string"
"My string" || false
> "My string"
"My string" || "My second string"
> "My string"
2 === 2 || "My string"
> true
Operatore di coalescenza nullish
Introdotto in ES2020, l'"operatore di coalezione null" (??
) restituisce il primo operando solo se questo ha un valore diverso da null
o undefined
. In caso contrario, restituisce
il secondo operando.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
??
è simile all'operatore logico OR, ma è più restrittivo per quanto riguarda la valutazione del primo operando. ||
restituisce il secondo operando per qualsiasi espressione che può essere forzata in false
, inclusi undefined
e null
. ??
restituisce il secondo operando quando il primo operando è diverso da null
o undefined
, anche se potrebbe essere forzato a false
:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
Operatori di assegnazione logica
Utilizza gli operatori di assegnazione per assegnare il valore di un secondo operatore a un primo operatore. L'esempio più comune è un singolo segno di uguale (=
), utilizzato per assegnare un valore a una variabile dichiarata.
Utilizza gli operatori di assegnazione logica per assegnare in modo condizionale un valore a una variabile in base al valore veritiero o falso della variabile.
L'operatore di assegnazione logico AND (&&=
) valuta il secondo operando e assegna al primo operando solo se il primo operando restituisce true
: in pratica, "se il primo operando è vero, assegnagli il valore del secondo operando":
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
Il valore veritiero o falso del primo operando determina se l'assegnazione viene eseguita. Tuttavia, il tentativo di valutare il primo operando utilizzando un operatore di confronto genera un valore booleano true
o false
, a cui non è possibile assegnare un valore:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
L'operatore di assegnazione logico OR (||=
) valuta il secondo operando e assegna al primo operando se il primo operando è false
, in pratica "se il primo operando è falso, assegnagli invece il valore del secondo operando:"
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Verifica le tue conoscenze
Quale operatore indica "strettamente uguale"?
===
==
=
!=