Ogni giorno noi ci troviamo a compiere delle scelte:
"se facciamo una cosa allora le conseguenze sono...." è il nostro ragionamento. L'equivalente in JavaScript è l'istruzione condizionale
If...Else che può essere efficacemente tradotta in questi termini:
Se...Allora...Altrimenti.La forma più semplice con cui si può presentare l'istruzione condizionale è la seguente:
if (espressione) istruzione1
[else istruzione2]...espressione può assumere solamente i valori true (vero) oppure false (falso): è quindi "booleana". Qualora tale espressione assuma il valore true, verrà eseguita istruzione1 altrimenti istruzione2 (l'istruzione che segue l'else).
Quest'esempio mostra l'utilizzo del costrutto
if...else. Come nell'esempio visto nella precedente lezione, recuperiamo data e ora attuali servendoci del metodo
Date(); usiamo quindi il metodo
GetHours(), applicato alla variabile data d, per memorizzare l'ora corrente.
Nel costrutto
if...else, inseriamo come condizione l'espressione
time < 12. In questo modo, qualora l'ora attuale sia precedente a mezzogiorno, verrà stampata, sulla pagina HTML, l'esclamazione
Buongiorno!, altrimenti
Buonasera!.Proviamo ora ad ideare uno script che ci consenta di presentare, all'utente che visita il nostro sito web, o il nostro IlSoftware.it oppure Digifocus (www.digifocus.it). La scelta dovrà essere operata in modo del tutto casuale (il link de IlSoftware.it o quello di Digifocus avranno il 50% di possibilità di venire mostrati).
Il metodo
Random(), applicato all'oggetto
Math, consente di generare un numero casuale compreso tra 0 ed 1 (decimali compresi): ciò significa che l'istruzione
Math.random() genera numeri casuali del tipo 4,345125 oppure 5,899271236 e così via. Memorizziamo il numero prodotto in una variabile: nel nostro esempio l'abbiamo denominata r.
Utilizziamo, quindi, l'istruzione
if...then imponendo, come condizione,
r>0.5. In pratica se il numero generato è maggiore di 0.5, viene proposto il link verso IlSoftware.it; altrimenti quello di Digifocus.
Lo script è visualizzabile accedendo al codice HTML
di questa pagina.Qualora si debbano effettuare numerosi test su un'unica espressione, conviene ricorrere all'utilizzo dell'istruzione
Switch. Il valore assunto dall'espressione viene infatti confrontato, in questo caso, con una serie di possibilità. Anziché uno solo, possono essere eseguiti, in sequenza, numerosi confronti. Analizziamo un possibile utilizzo dell'istruzione condizionale
Switch con un esempio pratico (file
08_switch.html).
Supponiamo di voler allietare l'utente che visita il nostro sito web con una frase spiritosa, scelta - in modo del tutto casuale - tra dieci diverse possibilità. Come nel caso precedente, anche qui possiamo ricorrere all'utilizzo del metodo
Math.random().
Per ottenere un numero intero da 0 a 9 (le frasi da proporre sono dieci) utilizziamo un semplice "trucco": moltiplichiamo, dapprima, per 10 il contenuto della variabile
r (generato da
Math.random()) quindi utilizziamo il metodo floor per approssimare, all'intero più vicino, il numero ottenuto. Saremo certi, così, di avere - come contenuto della variabile r - un intero compreso tra 0 e 9.
Il valore assunto dalla variabile r viene quindi confrontato, dall'istruzione switch (r) con una serie di possibilità (indicate con i vari case).
L'istruzione
break consente allo script di uscire dal ciclo di switch: se fosse mancante, JavaScript continuerebbe a confrontare il valore.
E' possibile inserire, opzionalmente, anche un'istruzione
default: essa viene eseguita solo nel caso in cui il ciclo switch non trovi alcuni corrispondenza tra il valore assunto dall'espressione e le varie istruzioni case (nel nostro esempio default non è necessario).
Va ricordato che sia nelle espressioni if...then che in switch, l'operatore di uguaglianza che va utilizzano è
== (come già visto in precedenza) e non = (l'operatore di assegnamento). Si tratta di un errore molto comune che spesso provoca comportamenti inattesi (JavaScript si limita ad ignorare l'espressione).