在w3schools关于switch语句的教程中,它说:如果默认值不是切换块中的最后一种情况,请记住以默认值结尾。但是,该教程还指出:当JavaScript到达break关键字时,它将跳出switch块。因此,如果您在switch语句的开头具有带有break的默认值,为什么不总是执行默认值并且解释器立即退出该块呢?解释器没有按顺序读取switch语句中的项目?
3 回答

蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
如本教程所述
该
default
关键字指定的代码运行,如果没有case
匹配
default
关键字的位置无关紧要,在案例中执行代码之前,将先测试关键字之后的default
案例。如果这些情形之一的匹配,它的代码会被执行,所以break
在default
块将不被执行。
之后的代码default
,如果没有一个明确的情况下匹配,或者以前的情况下,才能执行default
选择并没有有break
前default
(所以漏网)。
该default:
案例通常是按照惯例写在最后,因此break
通常不需要在此处。本教程中的警告只是提醒您,如果您放default:
早一些,则break
适用于在没有任何情况的情况下继续进行下一种情况的规则;没有什么特别的default
规则可以阻止它。

杨魅力
TA贡献1811条经验 获得超6个赞
这在ECMA-262,13.12.9运行时语义:CaseBlockEvaluation(这是JavaScript的定义)中进行了指定。
不幸的是,该规范有点难以理解,但可以归结为以下几点:要执行switch语句,请尝试case
之前的子句default
(如果有);然后尝试case
后面的子句default
(如果有);并且只有当它们都不匹配时,才执行该default
零件。的位置无关紧要default
。
添加回答
举报
0/150
提交
取消