【发布时间】:2015-03-03 10:32:18
【问题描述】:
我在正在调试的文件中发现了一个令人讨厌的复制粘贴错误。这是switch 语句中的重复大小写标签。
switch (value) {
case 1:
case 2:
doSomething();
break;
case 2:
doSomethingElse();
break;
default:
break;
}
事实证明,这是完全合法的 JavaScript。甚至标准的代码质量工具也不会在这里抱怨:JSHint 和 JSCS 可以处理重复的标签、缺少的 break 语句和第二种情况 2 之后的死代码。
据我所知,重复的大小写值在 C++ 和 Java 中是非法的。
在 JavaScript 的 switch 块中有多个相同的 case 标签是有目的的吗?为什么允许这样做?
【问题讨论】:
-
永远不会遇到第二种情况。它实际上是死代码。我猜他们只是不寻找那个,因为他们希望程序员不要做这么愚蠢的事情
-
嗯,这个问题就像“为什么 JS 是这样设计的?”。我不确定您希望听到什么样的答案。
-
是的,这是一个关于语言设计的问题,因此是主观的。 ) 并且有一些具有失败行为的用例 (here's one)。
-
@raina77ow:AFAICT,该示例中的第二个
case 0:完全没有目的,可以删除。 -
WebStorm(或其他 JetBrains 编辑器)在有重复案例标签时会显示警告。
标签: javascript switch-statement