313 votes

JavaScript ou expression dans un boîtier de commutateur

Comment allez-vous utiliser un switch case lorsque vous avez besoin tester la « a » ou « b » dans le même cas ?

749voto

kei Points 10801
switch (pageid)
{
case "listing-page":
case "home-page":
    alert("hello");
    break;
case "details-page":
    alert("goodbye");
    break;
}

141voto

nnnnnn Points 70578

Étant donné que les autres réponses expliqué comment le faire sans réellement expliquer pourquoi cela fonctionne:

Lorsque l' switch s'exécute, il trouve la première correspondance case déclaration puis exécute chaque ligne de code après le commutateur jusqu'à ce qu'il touche un break - déclaration ou de la fin de l' switch (ou return déclaration de laisser l'ensemble de la fonction contenante). Lorsque vous avez délibérément omettre l' break de sorte que le code dans le cadre du prochain case est exécuté trop que l'on appelle une chute à travers. Donc, pour l'OP de l'exigence:

switch (pageid) {
   case "listing-page":
   case "home-page":
      alert("hello");
      break;

   case "details-page":
      alert("goodbye");
      break;
} 

Oublier d'inclure break des déclarations est assez commun de codification erreur et c'est la première chose que vous devriez regarder si votre switch ne fonctionne pas comme vous l'espériez. Pour cette raison, certaines personnes aiment à mettre un commentaire pour dire "à l'automne par le biais de" rendre clair lorsque la rupture des déclarations ont été omis sur le but. - Je le faire dans l'exemple suivant, car il est un peu plus compliqué, et montre comment certains cas, peut inclure le code à exécuter avant de tomber-par le biais de:

switch (someVar) {
   case 1:
      someFunction();
      alert("It was 1");
      // fall through
   case 2:
      alert("The 2 case");
      // fall through
   case 3:
      // fall through
   case 4:
      // fall through
   case 5:
      alert("The 5 case");
      // fall through
   case 6:
      alert("The 6 case");
      break;

   case 7:
      alert("Something else");
      break;

   case 8:
      // fall through
   default:
      alert("The end");
      break;
}

Vous pouvez également (en option) comprennent un default de cas, qui sera exécuté si aucun des autres cas de match - si vous n'incluez pas le default , et aucun cas de match puis rien ne se passe. Vous pouvez (en option), de l'automne jusqu'au cas par défaut.

Donc, dans mon deuxième exemple, si someVar est de 1, il ferait appel someFunction() et vous verriez quatre alertes alors qu'il tombe dans plusieurs cas, certains ont des alertes sous eux. Est - someVar est de 3, 4 ou 5, vous devriez voir deux alertes. Si someVar 7 vous pouvez voir "autre Chose" et si elle est de 8 ou de toute autre valeur, vous devriez voir "La fin".

16voto

SLaks Points 391154

Vous devez faire deux `` étiquettes.

Le contrôle sera passer de la première étiquette à la seconde, donc ils vont tous deux exécuter le même code.

0voto

Pathfinder Points 120

Je sais que le ' ||' règle fonctionne pour les numéros uniquement dans l’interrupteur. ... les nombreuses bêtises en javascript :

-9voto

Dinesh Points 122

Utilisez des virgules pour séparer les cas

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X