猿问

当默认值未结束时,在switch语句中使用默认值后中断

在w3schools关于switch语句的教程中,它说:

如果默认值不是切换块中的最后一种情况,请记住以默认值结尾。

但是,该教程还指出:

当JavaScript到达break关键字时,它将跳出switch块。

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


慕哥6287543
浏览 181回答 3
3回答

蝴蝶刀刀

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

杨魅力

这在ECMA-262,13.12.9运行时语义:CaseBlockEvaluation(这是JavaScript的定义)中进行了指定。不幸的是,该规范有点难以理解,但可以归结为以下几点:要执行switch语句,请尝试case之前的子句default(如果有);然后尝试case后面的子句default(如果有);并且只有当它们都不匹配时,才执行该default零件。的位置无关紧要default。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答