Comment utiliseriez-vous a switch
case
lorsque vous devez tester a ou b dans le même cas?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Comment utiliseriez-vous a switch
case
lorsque vous devez tester a ou b dans le même cas?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Réponses:
Vous pouvez utiliser la fonction Fall-through:
la source
Étant donné que les autres réponses ont expliqué comment le faire sans vraiment expliquer pourquoi cela fonctionne:
Lorsque le
switch
s'exécute, il trouve la premièrecase
instruction correspondante , puis exécute chaque ligne de code après le commutateur jusqu'à ce qu'il atteigne unebreak
instruction ou la fin deswitch
(ou unereturn
instruction pour quitter l'intégralité de la fonction contenant). Lorsque vous omettez délibérément lebreak
afin que le code sous le suivantcase
soit également exécuté, cela s'appelle une erreur . Donc, pour l'exigence du PO:Oublier d'inclure des
break
instructions est une erreur de codage assez courante et c'est la première chose que vous devez rechercher si votreswitch
ne fonctionne pas comme prévu. Pour cette raison, certaines personnes aiment mettre un commentaire pour dire "fall through" pour indiquer clairement quand les déclarations de pause ont été délibérément omises. Je fais cela dans l'exemple suivant car c'est un peu plus compliqué et montre comment certains cas peuvent inclure du code à exécuter avant de tomber:Vous pouvez également (facultativement) inclure un
default
cas, qui sera exécuté si aucun des autres cas ne correspond - si vous n'incluez pas dedefault
cas et aucun cas, rien ne se passe. Vous pouvez (facultativement) passer au cas par défaut.Donc, dans mon deuxième exemple, si
someVar
est 1, il appelleraitsomeFunction()
et vous verriez alors quatre alertes car il tombe dans plusieurs cas, dont certains ont des alertes sous eux. Est -cesomeVar
est 3, 4 ou 5 , vous verriez deux alertes. SisomeVar
c'est 7, vous verrez "autre chose" et si c'est 8 ou toute autre valeur, vous verrez "La fin".la source
Vous devez créer deux
case
étiquettes.Le contrôle passera de la première étiquette à la seconde, ils exécuteront donc tous les deux le même code.
la source
Vous devez le changer!
la source
Oubliez
switch
etbreak
, jouons avecif
. Et au lieu d'affirmerpermet de créer plusieurs tableaux avec des cas et de le vérifier avec Array.prototype.includes ()
la source
Utilisez des virgules pour séparer la casse
la source