为什么这两个陈述是等价的

时间:2017-08-13 17:25:16

标签: if-statement switch-statement logic

所以我的问题基本上与switch语句有关。为什么

IF statement

与:

相同
switch (foo) {
    case 1: case 2:
        bar();
        break;
}

在我看来,使用switch语句,case 1下的代码将被执行,而case 2下的代码将被忽略。请向我解释为什么不是这种情况。

3 个答案:

答案 0 :(得分:0)

break;语句完全负责断开交换机代码块。

没有break;语句的switch语句将以非常奇怪的顺序执行。

  switch (2) {
    case 2:
       alert("hello");
    case 3: 
        alert("goodbye");
        break;
    case 4:
         alert("will never show");
  }

JavaScript切换语句:https://www.w3schools.com/js/js_switch.asp

答案 1 :(得分:0)

在每个case语句的末尾添加break;以停止一个case然后执行它下面的所有内容。否则就会失败。

答案 2 :(得分:0)

在评估case语句时,代码将fall through直到块被终止(通常是break语句)。所以第一个片段的语义如下:

  • 如果foo2,请执行bar()然后中断。
  • 如果foo1,请执行case 1:之后的块,该块为空(即不执行任何操作),然后继续(通过)到{{1}之后的块},详见上一点
  • 对于任何其他值,不执行任何操作(因为没有匹配的case 2:块。

如您所见,这相当于在casebar()foo的情况下执行1