【发布时间】:2022-01-20 01:41:11
【问题描述】:
switch 语句的典型语法是:
switch(expression) {
case one:
// do something...
break;
case two:
// do something else...
break;
case three:
case four:
// do something special
break;
default:
// if nothing matches...
break;
}
这种语法看起来很像 Python(尤其是冒号和人们缩进它的方式),这与 JavaScript、Java 或 C 等语言的一般语法相反,大多数语句都使用花括号。有什么具体原因吗?
我希望它看起来更像:
switch(expression) {
case (one) {
// do something...
break;
} case (two) {
// do something else...
break;
} case (three) case (four) {
// do something special
break;
} default {
// if nothing matches...
break;
}
}
我认为我刚刚提供的示例看起来像 if-else if-else 语句,但 switch 语句不应该与语法样式匹配吗?
【问题讨论】:
-
将每个
case视为goto的标签。但是没有goto,而是switch正在跳转到标签。 -
C 是他们都继承的原始版本。有关详细信息,请参阅stackoverflow.com/a/36394985/53897。
-
也许你应该问为什么其他语言看起来不像 C ;-) 顺便说一句,只是为了进一步混淆你 :-),你 可以 这样做:
switch (expression) { case one: { // do something } break; } -
当
switch语句找到匹配的案例时,该案例之下的每个代码都会执行直到遇到break。您建议的语法似乎只运行匹配大小写。 -
关于语言为什么是这样的问题经常有有用的答案。语言不是从虚无中产生的,也不是通过掷骰子产生的。询问为什么它们的设计方式是完全合理的。将其关闭为“不可重现或由拼写错误引起”是对关闭系统的滥用。
标签: javascript java c syntax switch-statement