【发布时间】:2016-07-27 17:34:13
【问题描述】:
我有一个这样的 switch 语句:
switch(a) {
case 0:
// do something
break;
case 1:
// do something else
break;
}
我想要做的是在a == 2 时执行这两个代码块。我想写这样的东西:
switch(a) {
case 0:
case 2:
// do something
break;
case 1:
case 2:
// do something else
break;
}
但显然这不起作用,因为第一个 break 语句结束了整个 switch 语句。
我能想到的唯一方法是编写辅助函数:
function case0() {
// do something
}
function case1() {
// do something else
}
switch(a) {
case 0:
case0();
break;
case 1:
case1();
break;
case 2:
case0();
case1();
break;
}
这个解决方案对我来说似乎有点冗长和丑陋。有没有更好的方法来实现我想要的?
【问题讨论】:
-
switch语句已经够复杂了。你提议的是从根本上改变它们的工作方式。为什么不使用可以链接到函数的映射表呢?以{ 2: function() { ... } }为例。 -
嗯,我想把它保留在
switch中的主要原因是我已经在switch语句上构建了我的项目,我不想把它全部重写成别的东西。能够做到我所描述的。 -
你想要什么和 JavaScript 能做什么是两件不同的事情。你想屈服于现实还是用你的生命来对抗它?如果你愿意,欢迎你petition the ECMAScript group through TC39。有时我们认为最好的方法并没有成功。学习、适应、继续前进。
标签: javascript switch-statement code-structure