Vous pouvez utiliser plusieurs instructions if...else if, comme dans le chapitre précédent, pour exécuter plusieurs branches. Cependant, ce n’est pas toujours la meilleure solution, surtout lorsque toutes les branches dépendent de la valeur d’une seule variable.
À partir de JavaScript 1.2, vous pouvez l'utiliser pour gérer exactement cette situation, en utilisant une instruction switch, qui le fait plus efficacement si au lieu d'utiliser à plusieurs reprises des instructions if... else if.
Grammaire
switch donne une expression pour évaluer et calculer plusieurs instructions différentes en fonction de la valeur de cette expression. L'interpréteur vérifie chaque cas pour la valeur de l'expression jusqu'à ce qu'une correspondance soit trouvée. S'il n'y a pas de correspondance, la condition par défaut sera utilisée.
switch (expression) { case condition 1: statement(s) break; case condition 2: statement(s) break; ... case condition n: statement(s) break; default: statement(s) }
break demande à l'interprète de terminer dans des circonstances spécifiques. S'ils sont omis, l'interpréteur continuera à exécuter chaque instruction dans chacun des cas suivants.
Nous expliquerons l'instruction break dans le chapitre sur le contrôle de boucle.
Exemple :
L'exemple suivant illustre une boucle while de base :
<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>
Cela produira les résultats suivants :
Entering switch block Good job Exiting switch block
Exemple :
Considérez une telle situation, si l'instruction break n'est pas utilisée :
<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>
Cela produira les résultats suivants :
Entering switch block Good job Pretty good Passed Not so good Failed Unknown grade Exiting switch block