È possibile annidare un if dentro l'altro, in modo da poter valutare anche situazioni particolarmente complesse. Ad esempio:
// provate a cambiare il valore, eventualmente // indicando anche delle stringhe valore = 5; if (isNaN(valore) ) { /* isNaN() vuol dire "not a number" e serve per * vedere se il tipo di dati in esame è differente * da un numero */ alert(valore + " non è un numero!"); } else { if (valore >= 9) { alert(valore + " è maggiore o uguale a 9") } else { alert(valore + " è minore di 9") } }
Ma oltre ad utilizzare annidamenti particolarmente complessi, possiamo usare gli operatori logici per concatenare diverse espressioni e creare condizioni complesse.
La sintassi è questa:
( (<espressione 1>) <operatore logico> (<espressione 2>) )
dove (come abbiamo visto nelle precedenti lezioni) <espressione 1>
ed <espressione 2>
stanno per:
<valore1> <operatore relazionale> <valore 2>
Ad esempio:
x = 6; if ( (x >= 5) && (x <= 7) ) { alert ("x è compresa tra 5 e 7"); }
In questo modo possiamo valutare più condizioni contemporaneamente. Gli operatori logici che utilizzerete maggiormente sono i seguenti:
Operatore | Descrizione | Esempio |
---|---|---|
&& |
"and logico" Devono essere vere le espressioni a destra e sinistra dell’uguale. |
x=6; |
|| |
"or logico" Deve essere l’espressione a sinistra dell’uguale o quella a destra |
nome="Gianni"; |
! |
"not" Viene posta di fronte all'espressione in questione e la nega: - se è false la cambia in true - se è true la cambia in false |
nome="Marco"; |
Gli operatori logici funzionano nel modo seguente:
- viene esaminata l'espressione di sinistra (Questo significa che anche tutte le operazioni previste dall'espressione di sinistra sono eseguite prima)
- se l'operatore è binario ("and" e "or" ad esempio) si passa ad esaminare l'espressione di destra.
Nota: Se l'espressione di sinistra è sufficiente a determinare il risultato dell'operazione, quella di destra viene ignorata.
Ad esempio: se l'operando è un
or
(||
) e l'espressione di sinistra genera untrue
, non è necessario valutare anche l'espressione destra, perché il risultato sarà comunquetrue
, se abbiamo unand
(&&
) invece, sarà ignorata l'espressione destra se a sinistra abbiamo già unfalse
. - viene restituito il risultato
Avrete notato che la rappresentazione grafica di un operatore logico prevede il raddoppiamento del simbolo corrispondente (es: &&). Nel caso in cui vi dimentichiate di raddoppiare il simbolo (es: &), state in realtà utilizzando un operatore a livello di bit: il che non è scorretto, ma non sempre darà luogo allo stesso risultato.