所以我的问题基本上与switch语句有关。为什么
IF statement
与:
相同switch (foo) {
case 1: case 2:
bar();
break;
}
在我看来,使用switch语句,case 1下的代码将被执行,而case 2下的代码将被忽略。请向我解释为什么不是这种情况。
答案 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
语句)。所以第一个片段的语义如下:
foo
为2
,请执行bar()
然后中断。foo
为1
,请执行case 1:
之后的块,该块为空(即不执行任何操作),然后继续(通过)到{{1}之后的块},详见上一点case 2:
块。如您所见,这相当于在case
为bar()
或foo
的情况下执行1
。