Operatori booleani ECMAScript
- Pagina precedente Operatori bit
- Pagina successiva Operatori aritmetici
Gli operatori booleani sono molto importanti, poiché permettono al linguaggio di programmazione di funzionare correttamente.
Gli operatori booleani hanno tre tipi: NOT, AND e OR.
Operazione ToBoolean
Prima di studiare vari operatori logici, diamo un'occhiata all'operazione ToBoolean descritta nella specifica ECMAScript-262 v5.
L'operazione astratta ToBoolean converte i suoi parametri secondo le regole riportate nella tabella sottostante:
Tipo di parametro | Risultato |
---|---|
Non definito | false |
Null | false |
Booleano | Il risultato è uguale al parametro di input (senza conversione) |
Numero | Se il parametro è +0, -0 o NaN, il risultato è false; altrimenti è true. |
Stringa | Se il parametro è una stringa vuota, il risultato è false; altrimenti è true. |
Oggetto | true |
Operatore logico NOT
In ECMAScript, l'operatore NOT logico è lo stesso di quello di C e Java, e viene rappresentato dal simbolo di exclamazione (!).
Diversamente dagli operatori OR e AND logici,L'operatore NOT logico restituisce sempre un valore Booleano.
Il comportamento dell'operatore NOT logico è il seguente:
- Se l'operando è un oggetto, viene restituito false
- Se l'operando è il numero 0, viene restituito true
- Se l'operando è qualsiasi numero diverso da 0, viene restituito false
- Se l'operando è null, viene restituito true
- Se l'operando è NaN, viene restituito true
- Se l'operando è undefined, si verifica un errore
Di solito, l'operatore viene utilizzato per controllare i cicli:
var bFound = false; var i = 0; while (!bFound) { if (aValue[i] == vSearchValues) { bFound = true; } else { i++; } }
In questo esempio, la variabile Booleana (bFound) viene utilizzata per registrare se la ricerca è stata riuscita. Quando viene trovato l'elemento di dati nel problema, bFound viene impostato su true, !bFound è uguale a false, il che significa che l'esecuzione esce dal ciclo while.
Quando si giudica il valore Boolean di una variabile ECMAScript, si può anche utilizzare l'operatore NOT logico. Per fare questo, è necessario utilizzare due operatori NOT in una singola riga di codice. L'operatore NOT iniziale restituisce un valore Booleano. Il secondo NOT negherà questo valore Booleano, fornendo così il vero valore Booleano della variabile.
var bFalse = false; var sRed = "red"; var iZero = 0; var iThreeFourFive = 345; var oObject = new Object; document.write("Il valore logico di bFalse è " + (!!bFalse)); document.write("Il valore logico di sRed è " + (!!sRed)); document.write("Il valore logico di iZero è " + (!!iZero)); document.write("Il valore logico di iThreeFourFive è " + (!!iThreeFourFive)); document.write("Il valore logico di oObject è " + (!!oObject));
Risultato:
Il valore logico di bFalse è false Il valore logico di sRed è true Il valore logico di iZero è false Il valore logico di iThreeFourFive è true Il valore logico di oObject è true
Operatore logico AND
In ECMAScript, l'operatore logico AND è rappresentato dal doppio e (&&):
Ad esempio:
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
La tabella di verità seguente descrive il comportamento dell'operatore logico AND:
Operando 1 | Operando 2 | Risultato |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Gli operandi dell'operazione logica AND possono essere di qualsiasi tipo, non solo valori Booleani.
Se uno degli operandi non è un valore Booleano originale, l'operazione logica AND non necessarily restituisce un valore Booleano:
- Se uno degli operandi è un oggetto e l'altro è un valore Booleano, viene restituito l'oggetto.
- Se entrambi gli operandi sono oggetti, viene restituito il secondo oggetto.
- Se uno degli operandi è null, viene restituito null.
- Se uno degli operandi è NaN, viene restituito NaN.
- Se un operando è undefined, si verifica un errore.
Simile all'operazione logica AND in Java, l'operazione logica AND in ECMAScript è un'operazione semplificata, ossia se il primo operando determina il risultato, il secondo operando non viene più calcolato. Per l'operazione logica AND, se il primo operando è false, il risultato non può mai essere true indipendentemente dal valore del secondo operando.
Consideriamo l'esempio seguente:
var bTrue = true; var bResult = (bTrue && bUnknown); // Si verifica un errore alert(bResult); // Questa riga non viene eseguita
Questo pezzo di codice lancia un errore durante l'operazione logica AND, poiché la variabile bUnknown è undefined. Il valore della variabile bTrue è true, poiché l'operazione logica AND continua a calcolare la variabile bUnknown. Questo comportamento lancia un errore, poiché il valore di bUnknown è undefined e non può essere utilizzato nell'operazione logica AND.
Se si modifica questo esempio, impostando il primo numero su false, non si verificherà alcun errore:
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); // Output: "false"
In questo pezzo di codice, lo script esegue l'operazione logica AND e restituisce il valore, ovvero la stringa "false". Anche se il valore della variabile bUnknown è undefined, non viene calcolato, poiché il valore del primo operando è false.
Suggerimento:Quando si utilizza l'operatore logico AND, è necessario ricordare questa caratteristica di calcolo semplice.
Operatore logico OR
L'operatore logico OR in ECMAScript è lo stesso di quello in Java, rappresentato da due barre verticali (||):
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
La tabella di verità seguente descrive il comportamento dell'operatore logico OR:
Operando 1 | Operando 2 | Risultato |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Simile all'operatore logico AND, se un operando non è un valore Booleano, l'operazione logica OR non restituisce necessariamente un valore Booleano:
- Se un operando è un oggetto e tutti i valori degli operandi a sinistra dell'oggetto sono false, viene restituito l'oggetto.
- Se entrambi gli operandi sono oggetti, viene restituito il primo oggetto.
- Se l'ultimo operando è null e tutti gli altri valori degli operandi sono false, viene restituito null.
- Se l'ultimo operando è NaN e tutti gli altri valori degli operandi sono false, viene restituito NaN.
- Se un operando è undefined, si verifica un errore.
Come l'operatore logico AND, l'operazione logica OR è anche un'operazione semplice. Per l'operatore logico OR, se il primo valore dell'operazione è true, non si calcola più il secondo valore.
Ad esempio:
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); //Output "true"
Come nell'esempio precedente, la variabile bUnknown è non definita. Tuttavia, poiché il valore della variabile bTrue è true, bUnknown non viene calcolato, quindi viene restituito "true".
Se si cambia bTrue in false, si verifica un errore:
var bFalse = false; var bResult = (bFalse || bUnknown); //Si verifica un errore alert(bResult); //Non verrà eseguita questa riga
- Pagina precedente Operatori bit
- Pagina successiva Operatori aritmetici