Tracce
/
JavaScript
JavaScript
/
Programma
/
Istruzione switch
Is

Istruzione switch in JavaScript

4 esercizi

Informazioni su Istruzione switch

Sintassi generale

Oltre all'istruzione if, JavaScript ha anche l'istruzione switch per eseguire del codice in modo condizionale. Si usa quando una singola variabile deve essere confrontata con più varianti. Il confronto avviene verificando l'uguaglianza stretta (===), vedi il concetto di confronto. Per una variabile x, l'istruzione switch in JavaScript ha la seguente sintassi.

switch (x) {
  case option1:
    // code that is executed when "x === option1" is true
    break;
  case option2:
    // code that is executed when "x === option2" is true
    break;
  default:
    // code that is executed when x does not equal any of the
    // options
}

Il caso default è opzionale e si usa quando vuoi eseguire del codice se nessuna delle altre opzioni corrisponde alla variabile.

Il fallthrough predefinito

Le istruzioni break qui sopra sono necessarie perché per impostazione predefinita tutti i casi sono «fallthrough» in JavaScript. Questo significa che, senza alcuna istruzione break, verrebbe eseguito tutto il codice dei casi successivi alla prima opzione corrispondente, anche se x non corrisponde a quelle opzioni. Questo comportamento di «fallthrough predefinito» è una trappola comune quando si usa switch in JavaScript. All'interno di una funzione, si può anche usare return invece di break per evitare questo problema.

Puoi sfruttare il comportamento fallthrough quando vuoi applicare lo stesso codice a più casi. Ne trovi un esempio nella documentazione MDN.

Scope

Per impostazione predefinita, le variabili nelle diverse istruzioni case condividono lo stesso scope. Questo può portare a comportamenti inattesi. Per esempio, copiando e incollando un caso, potresti ritrovarti con una dichiarazione let message in due casi diversi, il che genera un errore, vedi la documentazione MDN. Per evitare problemi dovuti allo scope condiviso, puoi creare uno scope separato per ogni caso aggiungendo blocchi di codice con parentesi graffe ({}) per ciascun caso.

switch (x) {
  case option1: {
    // Variables declared here are contained to this case.
    break;
  }
  case option2: {
    // ...
    break;
  }
  default: {
    // ...
  }
}

Usare le espressioni

Al posto di una variabile x, puoi anche usare un'espressione. Quell'espressione viene valutata una sola volta all'inizio dell'istruzione switch e il risultato viene confrontato con i casi. Un uso comune di questa tecnica è il «type switch», che esegue codice diverso a seconda del tipo di una variabile.

switch (typeof x) {
  case 'string':
    // code that is executed when x is a string
    break;
  case 'number':
    // code that is executed when x is a number
    break;
  default:
    // code that is executed when x has some other type
}

Anche le opzioni possono essere espressioni.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Istruzione switch