switch

Compare une valeur à une liste de cas case et exécute le code à partir du premier qui correspond.

Sur cette page

Exemple

#
JavaScript
function taskLabel(type) {
  switch (type) {
    case 'video':
      return 'Film'
    case 'question':
      return 'Quiz'
    case 'sort':
      return 'Exercice'
    default:
      return 'Leçon'
  }
}

console.log(taskLabel('video'))
console.log(taskLabel('sort'))
console.log(taskLabel('analyze'))
Console
Film
Exercice
Leçon

Définition et utilisation

#

L’instruction switch évalue une expression une fois, puis compare le résultat aux étiquettes case les unes après les autres. Quand elle en trouve une qui correspond, elle exécute le code à partir de cet endroit. Si rien ne correspond, elle passe au default optionnel.

La comparaison se fait avec l’opérateur strict ===, donc la chaîne "1" ne correspond pas au nombre 1. Chaque cas se termine en général par break ou return. Sans cela, l’exécution « tombe » (fall-through) dans le case suivant, ce qui est parfois une erreur, mais permet aussi de regrouper plusieurs cas en un seul.

switch est lisible quand vous comparez une seule variable à plusieurs valeurs concrètes, par ex. un type de tâche ou un nom de commande. Pour des plages numériques et des conditions complexes, if...else convient mieux.

Syntaxe

#
Syntaxe
switch (expression) {
  case value1:
    // instructions
    break
  case value2:
  case value3:
    // instructions communes
    break
  default:
    // si rien ne correspond
}

Plus d’exemples

#
Piège : un break manquant
JavaScript
const level = 2

switch (level) {
  case 1:
    console.log('Débloqué : HTML')
  case 2:
    console.log('Débloqué : CSS')
  case 3:
    console.log('Débloqué : JavaScript')
    break
  default:
    console.log('Aucune récompense')
}
Console
Débloqué : CSS
Débloqué : JavaScript

L’exécution commence à case 2 et continue jusqu’à rencontrer un break. C’est parfois voulu, mais bien plus souvent c’est simplement un break oublié.

Comparaison stricte
JavaScript
const answer = '1'

switch (answer) {
  case 1:
    console.log('le nombre 1')
    break
  case '1':
    console.log('la chaîne "1"')
    break
}
Console
la chaîne "1"
switch (true) pour des plages
JavaScript
const points = 75

switch (true) {
  case points >= 90:
    console.log('Médaille d’or')
    break
  case points >= 60:
    console.log('Médaille d’argent')
    break
  default:
    console.log('Médaille de bronze')
}
Console
Médaille d’argent

Ce schéma fonctionne parce que le résultat de chaque condition est comparé à true. Beaucoup de développeurs préfèrent un simple if...else dans cette situation.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Terminez chaque cas par break ou return. Si le fall-through est volontaire, laissez un commentaire, par ex. // suite, pour que personne ne le prenne pour une erreur.
  • En déclarant des variables à l’intérieur d’un case, entourez son code d’accolades : case "video": { ... }. Tous les cas partagent un seul bloc, donc deux const du même nom donneront une erreur de syntaxe.
  • Quand switch ne fait que transformer une valeur en une autre, un objet est souvent plus simple : const labels = { video: "Film", question: "Quiz" } et une lecture labels[type].

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.