Answers:
您可以使用穿透:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
由于其他答案在没有实际解释其工作原理的情况下说明了如何进行操作:
当switch
执行时,它找到第一个匹配case
语句,然后在切换之后执行的代码的每一行,直至它碰到或者是break
语句或的端部switch
(或一个return
语句留下含整个函数)。当您故意省略时break
,下一个下面的代码也将case
被执行,这称为fall-through。因此,对于OP的要求:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
忘记包含break
语句是一个很常见的编码错误,并且如果您switch
没有按照预期的方式工作,这是您应该寻找的第一件事。因此,有些人喜欢在注释中说“ fall through”,以明确表示故意中断了break语句的时间。我在下面的示例中这样做,因为它有点复杂,并说明了某些情况下如何包括在执行失败之前执行的代码:
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;
}
您还可以(可选)包含一个default
案例,如果其他所有案例都不匹配,则将执行该案例-如果您不包含default
且案例不匹配,则什么也不会发生。您可以(可选)使用默认情况。
因此,在我的第二个示例中,如果someVar
为1,它将调用someFunction()
,然后您将看到四个警报,因为它遇到了多个情况,其中有些情况下还包含警报。是someVar
3、4或5,您会看到两个警报。如果someVar
为7,则会看到“其他”,如果为8或任何其他值,则会看到“结束”。
您必须切换它!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
忘记switch
和break
,让玩家用if
。而不是断言
if(pageid === "listing-page" || pageid === "home-page")
让我们用案例创建几个数组,并使用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");
}