Wie würden Sie a verwenden, switch
case
wenn Sie im selben Fall auf a oder b testen müssen ?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Wie würden Sie a verwenden, switch
case
wenn Sie im selben Fall auf a oder b testen müssen ?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Antworten:
Sie können Fall-Through verwenden:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Da die anderen Antworten erklärten, wie es geht, ohne tatsächlich zu erklären, warum es funktioniert:
Wenn der switch
Befehl ausgeführt wird, findet er die erste übereinstimmende case
Anweisung und führt dann jede Codezeile nach dem Wechsel aus, bis er entweder eine break
Anweisung oder das Ende der switch
(oder eine return
Anweisung zum Verlassen der gesamten enthaltenen Funktion) trifft . Wenn Sie das absichtlich weglassen, break
damit auch der Code unter dem nächsten case
ausgeführt wird, spricht man von einem Durchfall . Also für die Anforderung des OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Das Vergessen, break
Anweisungen einzuschließen, ist ein ziemlich häufiger Codierungsfehler und das erste, wonach Sie suchen sollten, wenn Sie switch
nicht wie erwartet funktionieren. Aus diesem Grund geben einige Leute gerne einen Kommentar ein, um "durchfallen" zu sagen, um deutlich zu machen, wenn break-Anweisungen absichtlich weggelassen wurden. Ich mache das im folgenden Beispiel, da es etwas komplizierter ist und zeigt, wie einige Fälle Code enthalten können, der ausgeführt werden soll, bevor sie durchfallen:
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;
}
Sie können auch (optional) einen default
Fall einschließen , der ausgeführt wird, wenn keiner der anderen Fälle übereinstimmt. Wenn Sie keinen default
und keine Fälle angeben, geschieht nichts. Sie können (optional) auf den Standardfall zurückgreifen.
Wenn in meinem zweiten Beispiel someVar
1 angezeigt wird, wird aufgerufen, someFunction()
und dann werden vier Warnungen angezeigt, da mehrere Fälle durchlaufen werden, von denen einige Warnungen enthalten. Ist someVar
3, 4 oder 5, würden Sie zwei Warnungen sehen. Wenn someVar
7 ist, sehen Sie "Etwas anderes" und wenn es 8 oder ein anderer Wert ist, sehen Sie "Das Ende".
Du musst es wechseln!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Vergiss switch
und break
lass uns spielen mit if
. Und anstatt zu behaupten
if(pageid === "listing-page" || pageid === "home-page")
Lassen Sie uns mehrere Arrays mit Fällen erstellen und mit Array.prototype.includes () überprüfen.
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");
}