测试交换机中的多个情况,如 OR (||)
2022-08-30 00:00:48
当您需要在同一种情况下测试a或b时,您将如何使用a?switch
case
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
当您需要在同一种情况下测试a或b时,您将如何使用a?switch
case
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
您可以使用跌倒:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
由于其他答案解释了如何做到这一点,而没有实际解释它为什么有效:
执行时,它会找到第一个匹配的语句,然后在切换后执行每行代码,直到它命中语句或末尾(或离开整个包含函数的语句)。当你故意省略,以便下一个下面的代码也被执行时,这被称为下降。因此,对于OP的要求:switch
case
break
switch
return
break
case
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
忘记包含语句是一个相当常见的编码错误,如果你没有按照预期的方式工作,这是你应该寻找的第一件事。出于这个原因,有些人喜欢在评论中说“跌倒”,以便在故意省略中断语句时明确说明。我在下面的示例中这样做,因为它有点复杂,并且显示了某些情况如何包含要在它们失败之前执行的代码:break
switch
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;
}
您还可以(可选)包括一个案例,如果其他案例都不匹配,则将执行该案例 - 如果您不包括a并且没有匹配的案例,则不会发生任何事情。您可以(可选)切换到默认情况。default
default
因此,在我的第二个示例中,如果它是1,它将调用,然后您将看到四个警报,因为它会通过多个案例,其中一些案例下有警报。是 3、4 或 5,您会看到两个警报。如果是7,你会看到“其他东西”,如果它是8或任何其他值,你会看到“结束”。someVar
someFunction()
someVar
someVar