Wie würden Sie a verwenden, switch casewenn 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 casewenn 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 switchBefehl ausgeführt wird, findet er die erste übereinstimmende caseAnweisung und führt dann jede Codezeile nach dem Wechsel aus, bis er entweder eine breakAnweisung oder das Ende der switch(oder eine returnAnweisung zum Verlassen der gesamten enthaltenen Funktion) trifft . Wenn Sie das absichtlich weglassen, breakdamit auch der Code unter dem nächsten caseausgefü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, breakAnweisungen einzuschließen, ist ein ziemlich häufiger Codierungsfehler und das erste, wonach Sie suchen sollten, wenn Sie switchnicht 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 defaultFall einschließen , der ausgeführt wird, wenn keiner der anderen Fälle übereinstimmt. Wenn Sie keinen defaultund keine Fälle angeben, geschieht nichts. Sie können (optional) auf den Standardfall zurückgreifen.
Wenn in meinem zweiten Beispiel someVar1 angezeigt wird, wird aufgerufen, someFunction()und dann werden vier Warnungen angezeigt, da mehrere Fälle durchlaufen werden, von denen einige Warnungen enthalten. Ist someVar3, 4 oder 5, würden Sie zwei Warnungen sehen. Wenn someVar7 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 switchund breaklass 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");
}