JavaScript switch : case et repli par défaut

L’instruction switch en JavaScript évalue une expression une seule fois puis dirige l’exécution vers une étiquette case correspondante avec l’égalité stricte (===). Utilisez-la pour remplacer des chaînes if...else quand chaque branche teste la même variable contre des valeurs discrètes : aiguiller des commandes, mapper des statuts ou gérer des options fixes. switch regroupe ce flux de contrôle basé sur les valeurs dans un seul bloc, avec un comportement de fall-through explicite contrôlé par break.

Exemple de switch JavaScript pour router des valeurs

Sortie :

La sortie apparaîtra ici...

Sortie :

Enregistrement du fichier

Comment cet exemple fonctionne

  1. switch (commande) évalue commande une seule fois et compare le résultat à chaque étiquette case JavaScript dans l’ordre du code source.
  2. Le case "enregistrer" correspond, donc l’exécution saute vers cette branche et exécute console.log("Enregistrement du fichier").
  3. break quitte le bloc switch. Sans lui, l’exécution continue dans le corps du case suivant, même si son étiquette ne correspond pas.
  4. default agit comme clause de rattrapage : il s’exécute quand aucune étiquette case ne correspond. Aucun break n’est nécessaire après default quand il est placé en dernier.

Dans une instruction case JavaScript comme case "enregistrer":, l’étiquette est une valeur à faire correspondre, pas une condition booléenne séparée.

Erreurs courantes avec JavaScript switch case

Oublier break : Sans lui, l’exécution continue dans chaque corps case suivant. Omettez break uniquement quand vous regroupez des case intentionnellement.

const commande = "enregistrer";

switch (commande) {
  // Faux — affiche les deux messages quand commande vaut "enregistrer"
  case "enregistrer":
    console.log("Enregistrement");
  case "fermer":
    console.log("Fermeture");
}

Mélanger les types dans les étiquettes case : switch utilise ===, donc "2" ne correspond jamais à 2. Convertissez l’expression vers un type cohérent avant de passer dans switch.

Réutiliser let/const entre les case : Tous les case partagent la portée du bloc switch. Deux case qui déclarent let result provoquent un SyntaxError — encapsulez chaque case dans { } pour créer des portées lexicales séparées.

Switch vs if…else

Utilisez switch quand…Utilisez if...else quand…
Vous comparez une expression à plusieurs valeurs fixesLes conditions impliquent des plages, des inégalités, ou des variables différentes
Plusieurs case partagent le même traitement via le fall-throughChaque branche a une logique composée et indépendante

Pour de grandes correspondances valeur-action, une recherche par objet peut être plus lisible que les deux approches. Protégez les clés manquantes pour ne pas appeler undefined comme une fonction.

Plus d’exemples

Regroupez plusieurs étiquettes case pour partager un même traitement :

const jour = "Sam";
switch (jour) {
  case "Sam":
  case "Dim":
    console.log("Week-end");
    break;
  default:
    console.log("Semaine");
}

Empiler des étiquettes case sans break entre elles envoie toutes les valeurs listées vers le même bloc. Gardez le traitement partagé court et terminez-le avec break, return ou throw pour éviter d’exécuter par erreur les case suivants. Si vous avez besoin d’un comportement différent par étiquette, évitez le fall-through et donnez à chaque case son propre corps et sa propre sortie.

FAQ

Est-ce que switch JavaScript utilise == ou === ?

switch compare avec l’égalité stricte (===). Aucune coercition de type n’a lieu, donc 0 ne correspond pas à "0" et null ne correspond pas à undefined. Assurez-vous que l’expression et les étiquettes case partagent le même type.

Que se passe-t-il si vous omettez break dans un case de switch ?

L’exécution continue dans le corps du case suivant, indépendamment de son étiquette. Cela se poursuit jusqu’à un break, un return, ou la fin du bloc switch. Le fall-through intentionnel sert à regrouper plusieurs étiquettes case sous un même traitement.

default peut-il apparaître avant d’autres case ?

Oui. default peut être placé n’importe où dans le bloc switch. Il s’exécute quand aucun case ne correspond, puis l’exécution continue à partir de ce point — ajoutez donc un break après default sauf s’il est la dernière clause.