JavaScript - Switch Case

Puoi usare più file if...else…ifistruzioni, come nel capitolo precedente, per eseguire un ramo a più vie. Tuttavia, questa non è sempre la soluzione migliore, soprattutto quando tutti i rami dipendono dal valore di una singola variabile.

A partire da JavaScript 1.2, puoi utilizzare un file switch dichiarazione che gestisce esattamente questa situazione, e lo fa in modo più efficiente di quanto ripetuto if...else if dichiarazioni.

Diagramma di flusso

Il diagramma di flusso seguente spiega il funzionamento di un'istruzione switch-case.

Sintassi

L'obiettivo di a switchistruzione è fornire un'espressione da valutare e diverse istruzioni da eseguire in base al valore dell'espressione. L'interprete controlla ciascunocasecontro il valore dell'espressione finché non viene trovata una corrispondenza. Se niente corrisponde, adefault condizione verrà utilizzata.

switch (expression) {
   case condition 1: statement(s)
   break;
   
   case condition 2: statement(s)
   break;
   ...
   
   case condition n: statement(s)
   break;
   
   default: statement(s)
}

Il breakle dichiarazioni indicano la fine di un caso particolare. Se vengono omessi, l'interprete continuerà a eseguire ciascuna istruzione in ciascuno dei seguenti casi.

Spiegheremo break dichiarazione in Loop Control capitolo.

Esempio

Prova il seguente esempio per implementare l'istruzione switch-case.

<html>
   <body>   
      <script type = "text/javascript">
         <!--
            var grade = 'A';
            document.write("Entering switch block<br />");
            switch (grade) {
               case 'A': document.write("Good job<br />");
               break;
            
               case 'B': document.write("Pretty good<br />");
               break;
            
               case 'C': document.write("Passed<br />");
               break;
            
               case 'D': document.write("Not so good<br />");
               break;
            
               case 'F': document.write("Failed<br />");
               break;
            
               default:  document.write("Unknown grade<br />")
            }
            document.write("Exiting switch block");
         //-->
      </script>      
      <p>Set the variable to different value and then try...</p>
   </body>
</html>

Produzione

Entering switch block
Good job
Exiting switch block
Set the variable to different value and then try...

Le dichiarazioni di interruzione svolgono un ruolo importante nelle dichiarazioni di switch-case. Prova il codice seguente che utilizza l'istruzione switch-case senza alcuna istruzione break.

<html>
   <body>      
      <script type = "text/javascript">
         <!--
            var grade = 'A';
            document.write("Entering switch block<br />");
            switch (grade) {
               case 'A': document.write("Good job<br />");
               case 'B': document.write("Pretty good<br />");
               case 'C': document.write("Passed<br />");
               case 'D': document.write("Not so good<br />");
               case 'F': document.write("Failed<br />");
               default: document.write("Unknown grade<br />")
            }
            document.write("Exiting switch block");
         //-->
      </script>      
      <p>Set the variable to different value and then try...</p>
   </body>
</html>

Produzione

Entering switch block
Good job
Pretty good
Passed
Not so good
Failed
Unknown grade
Exiting switch block
Set the variable to different value and then try...