L'istruzione switch case in Javascript

L'istruzione switch case è una struttura condizionale del linguaggio javascript che mi permette di controllare più valori possibili di una condizione o variabile

switch (condizione) {

case valore1:
// codice 1
break;

case valore2:
// codice 2
break;

...

default:
// codice alternativo

}

La condizione va messa tra parentesi dopo la parola chiave switch.

Ogni valore da verificare va invece inserito dopo la parola "case".

Nota. Quando la struttura incontra una condizione soddisfatta (vera) non esce automaticamente ma procede ed esegue anche gli altri blocchi di codice delle altre clausole case. Per evitare che lo faccia occorre aggiungere un'uscita forzata break al termine di ogni blocco codice.

La clausola default è facoltativa e indica il codice da eseguire alla fine. In questo di caso l'esecuzione del codice non è associato a una condizione.

La struttura switch-case è utile per verificare più condizioni. E' un'alternativa più ordinata rispetto alla struttura if else if.

    Un esempio pratico

    In questo script chiedo all'utente di digitare un voto da 0 a 10

    A seconda del valore digitato, lo script restituisce una risposta diversa.

    <script>
    voto=prompt("digita il voto");

    switch (voto) {

    case "3" , "4" :
    document.write("insufficiente <br> ");
    document.write("non hai studiato ");
    break;

    case "5":
    document.write("insufficiente <br> ");
    document.write("puoi fare meglio ");
    break;

    case "6":
    document.write("sufficiente");
    break;

    case "7","8":
    document.write("discreto");
    break;

    case "9","10":
    document.write("ottimo");
    break;

    default:
    document.write("scarso");

    }

    </script>

    Ad esempio, se l'utente digita 6 viene soddisfata la clausola case "6", lo script visualizza il messaggio "sufficiente" ed esce dalla struttura condizionale quando incontra l'istruzione break.

    sufficiente

    Se l'utente digita 7 o 8 lo script visualizza il messaggio "discreto"

    discreto

    Nota. In una singola clausola case posso inserire più istruzioni in sequenza. In questo caso non è necessario inserire le parentesi graffe all'inizio e alla fine di ogni blocco. Per questa ragione la struttura switch case appare molto più ordinata rispetto a una struttura multipla if else if.

    Se l'utente digita un valore diverso da quelli indicati nelle clausole case, lo script giunge alla clausola finale default che visualizza il messaggio "scarso".

    scarso

    Nota. La clausola finale default non è associata a una condizione. E' comunque una clausola facoltativa. Può anche mancare del tutto.

    Cosa accade se non inserisco le istruzioni break?

    Quando la struttura switch case trova una condizione soddisfatta, esegue tutti i blocchi di codici seguenti. Anche quelli delle altre clausole if.

    Ad esempio, in questo script verifico se l'utente ha digitato la lettera "A", "B" o "C"

    <script>
    scelta=prompt("digita A, B oppure C ");

    switch (scelta) {

    case "A":
    document.write("hai digitato A<br> ");

    case "B":
    document.write("hai digitato B<br> ");

    case "C":
    document.write("hai digitato C<br> ");

    }
    </script>

    Quando l'utente digita la scelta A, lo script visualizza tutte le risposte

    hai digitato A
    hai digitato B
    hai digitato C

    Se digita la scelta B, lo script visualizza la seconda e la terza risposta

    hai digitato B
    hai digitato C

    A volte questo effetto può anche fare comodo... in altri casi no.

    In ogni caso per evitarlo basta aggiungere l'istruzione break; alla fine di ogni blocco di codice.

    <script>
    scelta=prompt("digita A, B oppure C ");
    switch (scelta) {

    case "A":
    document.write("hai digitato A<br> ");
    break;

    case "B":
    document.write("hai digitato B<br> ");
    break;

    case "C":
    document.write("hai digitato C<br> ");
    break;

    }
    </script>

    In questo caso, quando l'utente digita la lettera A lo script esegue solo il primo blocco di codice e visualizza A.

    hai digitato A

    E così via.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Javascript

    Le strutture di controllo

    Gestione degli errori ed eccezioni

    Le strutture cicliche

    FAQ