And*_*res 222 javascript switch-statement fall-through
switch
case
当你需要在同一个案例中测试a 或 b时,你将如何使用?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Run Code Online (Sandbox Code Playgroud)
kei*_*kei 515
您可以使用直通:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Run Code Online (Sandbox Code Playgroud)
nnn*_*nnn 116
由于其他答案解释了如何做到这一点,而没有实际解释它的工作原理:
当switch
执行时,它找到第一个匹配case
语句,然后在切换之后执行的代码的每一行,直至它碰到或者是break
语句或的端部switch
(或一个return
语句留下含整个函数).当你故意省略时break
,下面的代码case
也会被执行,这就是所谓的堕落.所以对于OP的要求:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Run Code Online (Sandbox Code Playgroud)
忘记包含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;
}
Run Code Online (Sandbox Code Playgroud)
您还可以(可选)包含一个default
案例,如果其他案例都不匹配,将会执行案例 - 如果您不包含default
案例且没有案例匹配则不会发生任何事情.您可以(可选)进入默认情况.
所以在我的第二个例子中,如果someVar
它是1,它会调用someFunction()
,然后你会看到四个警报,因为它落在多个案例中,其中一些案例中有警报.是someVar
3,4或5你会看到两个警报.如果someVar
是7,你会看到"其他东西",如果它是8或任何其他值,你会看到"结束".
小智 6
您必须切换它!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
130527 次 |
最近记录: |