javascript 当所有case都互斥时,switch语句是否应包括break语句?[duplicate]

rryofs0p  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(99)
    • 此问题在此处已有答案**:

Why is Break needed when using Switch?(3个答案)
12小时前关门了。
在下面的switch语句中添加break语句会影响结果吗?

switch (character) {
    case "a": yield new A();
    case "b": yield new B();
    case "c": yield new C();
}

给出一个值并不能防止流的失败,所有的情况都是互斥的,这是否意味着我们不需要break语句?

7d7tgy0s

7d7tgy0s1#

是的,这是必要的!

case "a"被执行时,它将生成A,但是接下来将生成B,即使字符不匹配大小写“b”。
在我看来,这是switch/case中的一个设计缺陷,当然也是许多错误的根源。我认为这是一个设计缺陷,因为很多人看到这个控制结构时都认为它最多只能运行其中一个选项。对于大多数初学者来说,它会失败并不明显。

很容易相信switch/case类似于if/else if/else,但事实并非如此

如果所有的条件都是互斥的,这种设计将只允许运行一段代码。

if () {}
else if () {}
else if () {}

但是在switch/case中,执行会自动从匹配的case福尔斯后面的所有case,除非您有break

相关问题