Javascript 当默认值不在末尾时,在switch语句中使用break after default

Javascript 当默认值不在末尾时,在switch语句中使用break after default,javascript,switch-statement,Javascript,Switch Statement,在W3ON开关语句中,它表示: 如果默认值不是开关块中的最后一种情况,请记住结束 带中断的默认情况 但是,正如该教程所述: 当JavaScript到达一个break关键字时,它就会跳出开关 街区 因此,如果在switch语句的开头有一个带break的缺省值,那么为什么不总是执行缺省值并由解释器立即退出该块呢?解释器没有按顺序读取switch语句中的项目?如教程所述 default关键字指定在没有case匹配时要运行的代码 default关键字的位置无关紧要,在执行default案例中的代码之前,

在W3ON开关语句中,它表示:

如果默认值不是开关块中的最后一种情况,请记住结束 带中断的默认情况

但是,正如该教程所述:

当JavaScript到达一个break关键字时,它就会跳出开关 街区

因此,如果在switch语句的开头有一个带break的缺省值,那么为什么不总是执行缺省值并由解释器立即退出该块呢?解释器没有按顺序读取switch语句中的项目?

如教程所述

default
关键字指定在没有
case
匹配时要运行的代码

default
关键字的位置无关紧要,在执行
default
案例中的代码之前,将测试它之后的案例。如果其中一种情况匹配,将执行其代码,因此将不执行
default
块中的
break

只有当显式事例不匹配,或者选择了
default
之前的事例,并且
default
之前没有
break
时,才会执行
default
之后的编码(因此它失败)

default:
案例通常按照惯例写在最后,因此在那里通常不需要
中断。本教程中的警告只是提醒您,如果您在前面输入了
默认值:
,则在没有
中断时,您继续进入下一个案例的规则仍然适用;默认的
规则没有什么特别的地方可以阻止它。

这是在中指定的(这是JavaScript的定义)

不幸的是,该规范有点难以理解,但它归结为以下几点:要执行switch语句,请尝试
default
之前的
case
子句(如果有的话);然后尝试
default
后面的
case
子句(如果有);只有当它们都不匹配时,才执行
default
部分。默认设置的位置无关紧要。

您也可以从中阅读:

default
关键字指定在没有大小写匹配时要运行的代码

因此,例如,如果在开头定义,并且存在一个
案例
匹配,则将执行与该匹配相关联的代码,而不是与默认块相关联的代码,例如:

功能测试(n)
{
让我们重新来过;
开关(n)
{
违约:
res=“默认”;
打破
案例1:
res=“案例1”;
打破
案例0:
res=“案例2”;
}
返回res;
}
日志(测试(1)、测试(0)、测试(9))
.as控制台{背景色:黑色!重要;颜色:石灰;}

.as console wrapper{max height:100%!important;top:0;}
,因为只有在其他案例都不匹配时才会使用
默认值:
案例。