4.2 Switch...case
L'instruction conditionnelle switch...case permet de comparer la valeur d'une variable à plusieurs valeurs possibles, comme alternative à une chaîne de if...else if. Imaginons une variable role qui représente le rôle de l'utilisateur courant : invité, modérateur ou administrateur. Le switch rend ce type de comparaison plus structuré que des if en cascade.
Syntaxe du switch
On écrit le mot-clé switch suivi de parenthèses. Mais au lieu d'une condition, on y place directement la variable à tester, ici role. Puis on ouvre des accolades qui contiennent une ou plusieurs déclarations case. Chaque case compare la variable à une valeur précise et exécute les instructions associées. À la fin de chaque bloc, l'instruction break est essentielle : elle fait sortir du switch. Sans break, l'exécution continuerait dans le case suivant. Une clause default optionnelle permet de gérer toutes les valeurs non prévues, sans nécessiter de break.
let role;
switch (role) {
case 'invité':
console.log('Utilisateur invité');
break;
case 'modérateur':
console.log('Modérateur');
break;
default:
console.log('Utilisateur inconnu');
}
Tant que role n'est pas défini, on obtient « Utilisateur inconnu ». En l'affectant à 'invité' ou 'modérateur', on obtient le message correspondant. Les valeurs comparées peuvent être des chaînes, des nombres ou même des booléens — bien que pour les booléens, un simple if soit plus naturel.
Switch vs if...else
La même logique peut s'écrire avec des if...else if...else en utilisant l'égalité stricte === (qui compare type et valeur). Cette version est souvent plus concise : pas de break à répéter, pas d'accolades inutiles. Cela ne veut pas dire qu'il faut bannir le switch : il reste pertinent quand on a beaucoup de cas à traiter ou quand la consigne l'impose. On se retrouve sur la prochaine démo consacrée aux boucles for.
En résumé
Ce cours présente l'instruction switch-case en JavaScript, utilisée pour comparer la valeur d'une variable avec plusieurs cas différents. La structure switch offre une alternative plus lisible aux cascades d'instructions if-else, avec des cas (case), des ruptures (break) pour éviter l'exécution en cascade, et une option par défaut (default). Bien que fonctionnelle, cette leçon montre aussi que les if-else restent parfois plus simples et plus concis pour certaines comparaisons.
Points clés
- Structure de switch : la variable entre parenthèses est comparée avec chaque cas déclaré après le mot-clé case
- L'instruction break est essentielle pour sortir du bloc switch et éviter que les cas suivants ne s'exécutent (fall-through)
- Le bloc default s'exécute si aucun cas ne correspond à la valeur ; contrairement aux cas, il ne requiert pas de break
- Les valeurs comparées peuvent être des chaînes, des nombres ou même des booléens
- Les if-else offrent une syntaxe plus concise pour les comparaisons simples, tandis que switch brille avec de nombreux cas à tester
Questions fréquentes
Pourquoi faut-il ajouter break après chaque cas dans un switch ?
Sans break, l'exécution continue dans les cas suivants (fall-through), ce qui provoque l'exécution de code non désiré. Le break permet de sortir immédiatement du bloc switch une fois le cas trouvé.
Quelle est la différence entre switch et if-else ?
Switch est idéal pour comparer une variable avec plusieurs valeurs discrètes et offre une meilleure lisibilité. If-else est plus flexible pour des conditions complexes. Pour quelques comparaisons simples, if-else est souvent plus concis.
Faut-il toujours inclure un bloc default ?
Non, le bloc default est optionnel. Il s'utilise quand on souhaite traiter le cas où aucun cas ne correspond. Sans default, aucune instruction n'est exécutée si la valeur ne correspond à aucun cas.