Come si usa una switch
case
quando è necessario prova per una o B nello stesso caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Come si usa una switch
case
quando è necessario prova per una o B nello stesso caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Risposte:
È possibile utilizzare fall-through:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Poiché le altre risposte hanno spiegato come farlo senza effettivamente spiegare perché funziona:
Quando switch
viene eseguito, trova la prima case
istruzione corrispondente e quindi esegue ogni riga di codice dopo lo switch fino a quando non colpisce break
un'istruzione o la fine dell'istruzione switch
(o return
un'istruzione per lasciare l'intera funzione di contenimento). Quando si omette deliberatamente in break
modo che anche il codice sotto il successivo case
venga eseguito, questo viene chiamato fall-through . Quindi per il requisito del PO:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Dimenticare di includere le break
dichiarazioni è un errore di codifica abbastanza comune ed è la prima cosa che dovresti cercare se switch
non stai funzionando come previsto. Per questo motivo ad alcune persone piace inserire un commento per dire "fall through" per chiarire quando le dichiarazioni di rottura sono state omesse di proposito. Lo faccio nell'esempio seguente poiché è un po 'più complicato e mostra come alcuni casi possono includere il codice da eseguire prima che cadano:
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;
}
Puoi anche (facoltativamente) includere un default
caso, che verrà eseguito se nessuno degli altri casi corrisponde - se non includi una corrispondenza default
e nessun caso, allora non accade nulla. È possibile (facoltativamente) passare al caso predefinito.
Quindi nel mio secondo esempio, se someVar
è 1, chiamerebbe someFunction()
e quindi vedresti quattro avvisi mentre scorre attraverso più casi alcuni dei quali hanno avvisi sotto di essi. È someVar
3, 4 o 5 vedresti due avvisi. Se someVar
è 7 vedresti "Qualcos'altro" e se è 8 o qualsiasi altro valore vedresti "La fine".
Devi cambiarlo!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Dimentica switch
e break
, consente di giocare con if
. E invece di affermare
if(pageid === "listing-page" || pageid === "home-page")
consente di creare più array con case e controllarlo con Array.prototype.includes ()
var caseA = ["listing-page", "home-page"];
var caseB = ["details-page", "case04", "case05"];
if(caseA.includes(pageid)) {
alert("hello");
}
else if (caseB.includes(pageid)) {
alert("goodbye");
}
else {
alert("there is no else case");
}