关于javascript:测试交换机中的多个案例,如OR(||)

Test for multiple cases in a switch, like an OR (||)

在同一情况下,当您需要测试a或b时,您将如何使用switchcase

1
2
3
4
5
6
7
8
switch (pageid) {
  case"listing-page" ||"home-page":
    alert("hello");
    break;
  case"details-page":
    alert("goodbye");
    break;
}


您可以使用Fall Through:

1
2
3
4
5
6
7
8
9
10
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的要求:

1
2
3
4
5
6
7
8
9
10
switch (pageid) {
   case"listing-page":
   case"home-page":
      alert("hello");
      break;

   case"details-page":
      alert("goodbye");
      break;
}

忘记包含break语句是一个相当常见的编码错误,如果switch没有按预期工作,那么首先应该考虑的是它。出于这个原因,有些人喜欢在评论中说"失败",以明确何时有意省略中断语句。在下面的示例中,我这样做是因为它有点复杂,并且显示了一些情况下如何在代码失败之前包括要执行的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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或任何其他值,你会看到"结束"。


您需要制作两个case标签。

控件将从第一个标签掉落到第二个标签,因此它们都将执行相同的代码。


忘了switchbreak,我们来玩if。而不是断言

1
if(pageid ==="listing-page" || pageid ==="home-page")

让我们用事例创建几个数组,并用array.prototype.includes()检查它。

1
2
3
4
5
6
7
8
9
10
11
12
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");
}

你必须改变它!

1
2
3
4
5
6
7
8
switch (true) {
    case ( (pageid ==="listing-page") || (pageid === ("home-page") ):
        alert("hello");
        break;
    case (pageid ==="details-page"):
        alert("goodbye");
        break;
}


使用逗号分隔大小写

1
2
3
4
5
6
7
8
9
switch (pageid)
{
    case"listing-page","home-page":
        alert("hello");
        break;
    case"details-page":
        alert("goodbye");
        break;
}