Operatori di confronto

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"?

===
==
=
!=