Gli operatori di confronto confrontano i valori di due operandi e valutano se
la dichiarazione che formano è true
o false
. L'esempio seguente utilizza il metodo
strict equality (===
) per confrontare due operandi: l'espressione
2 + 2
e il valore 4
. Poiché il risultato dell'espressione e il numero
il valore 4
è lo stesso, questa espressione restituisce true
:
2 + 2 === 4
> true
Digita coercizione e uguaglianza
Due degli operatori di confronto più utilizzati sono ==
per la scarsa uguaglianza
e ===
per una rigida uguaglianza. ==
esegue un confronto generale tra due
costringendo gli operandi a tipi di dati corrispondenti, se possibile. Per
Ad esempio, 2 == "2"
restituisce true
, anche se viene eseguito 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 sono
rispetto non sono affatto uguali.
2 != 3
> true
2 != "2"
> false
I confronti rigorosi utilizzando ===
o !==
non eseguono la coercizione del tipo. Per un
confronto rigoroso per la valutazione 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 ===
ogni volta
possibile.
Operatore | Descrizione | Utilizzo | Risultato |
---|---|---|---|
=== | Rigorosamente uguale | 2 === 2 | true |
!== | Non esattamente uguale | 2 !== "2" | true |
== | Uguale (o "a grandi linee") | 2 == "2" | true |
!= | Diverso | 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 a
il valore booleano corrispondente, ad esempio, utilizzando la funzione "vagamente uguale"
di confronto. Un insieme limitato di valori viene forzato a false
:
0
null
undefined
NaN
- Una stringa vuota (
""
)
Tutti gli altri valori vengono applicati a true
, incluse eventuali stringhe contenenti uno o più
e tutti numeri diversi da zero. Questi vengono comunemente chiamati "verità" e
"falsico" e i relativi valori.
"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 falso o veritiero di un operando, valutando true
se l'operando ha come valore false
e false
se l'operando ha valore true
:
true
> true
!true
> false
!false
> true
Utilizzo dell'operatore logico NOT (!
) davanti a un altro tipo di dati, ad esempio un
numero o stringa, lo costringe a valore booleano e inverte il valore di verità o
valore falso del risultato.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
È pratica comune utilizzare due operatori NOT per forzare rapidamente i dati a con valore booleano corrispondente:
!!"string"
> true
!!0
> false
Gli operatori logici AND e OR non eseguono alcuna coercizione da soli. Loro restituisce il valore di uno dei due operandi valutati, con il valore dall'operando determinato da quella valutazione.
AND logico (&&
) restituisce il primo dei due operandi solo se quell'operando
restituisce false
e il secondo operando negli altri casi. In un confronto
restituisce valori booleani, restituisce true
solo se gli operandi su entrambi i lati
dell'operatore logico AND restituisce 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, viene restituito il primo operando
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'OR logico (||
) restituisce il primo dei due operandi solo se quell'operando
restituisce true
e il secondo operando negli altri casi. In un confronto
restituisce valori booleani, questo significa che restituisce true
se uno dei due operandi
restituisce true
e se nessuna delle parti 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 fosse possibile forzarlo 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 coalescing nullo
Introdotta in ES2020,
l'"operatore di coalescenza nullo" (??
) restituisce il primo operando solo se
l'operando ha qualsiasi 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 a un OR logico, ma è più restrittivo nel modo in cui il primo operando
viene valutato. ||
restituisce il secondo operando per ogni espressione che può essere
forzato a false
, inclusi undefined
e null
. ??
restituisce il secondo
operando quando il primo operando è diverso da null
o undefined
, anche se
potrebbe essere costretto a false
:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
Operatori di assegnazione logica
Utilizzare 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
Assegna un valore a una variabile dichiarata.
Utilizzare gli operatori di assegnazione logica per assegnare in modo condizionale un valore a una variabile in base al valore veritiero o fittizio della variabile.
L'operatore logico AND per l'assegnazione (&&=
) valuta il secondo operando e
assegna al primo operando solo se il primo operando valuta
true
—in realtà, "se il primo operando è vero, assegnagli il valore di
il 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 un'assegnazione
in cui viene eseguito il deployment. Tuttavia, il tentativo di valutare il primo operando utilizzando un confronto
genera un valore booleano true
o false
, che non può essere assegnato
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
assegnare al primo operando se il primo operando restituisce false
—
"Se il primo operando è falso, assegnagli 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"?
===
=
!=
==