关于JavaScript switch语句执行逻辑的疑问求助
关于JavaScript Switch语句执行逻辑的解释
核心原理
JavaScript的switch语句并非“匹配到对应case就仅执行该分支”,而是找到第一个与switch表达式匹配的case后,从该位置开始顺序执行所有后续代码,直到遇到break语句或者整个switch代码块结束——这就是常说的switch“贯穿(fall-through)”行为。
针对你的代码逐行分析
你的代码中switch(true)会寻找第一个case表达式结果为true的分支:
- 前两个
case false都不匹配,直接跳过; - 第三个
case true匹配成功,执行console.log("Unconditional"),但这个case末尾没有break,程序不会跳出switch,而是继续执行下一个case的代码; - 第四个
case false不管表达式是否匹配,程序都会直接执行里面的console.log("4"),直到遇到这个case里的break,才终止switch的执行; - 因为已经通过
break跳出了switch块,所以后面的case false: console.log("5")和default分支都不会被触发。
移除所有break时default执行的原因
如果把所有break都去掉,程序会从匹配的case true开始,一直顺序执行完所有后续case分支,直到switch块的最后,自然就会执行default分支的代码。
内容的提问来源于stack exchange,提问作者user3311045
相关产品推荐
相关产品推荐

