JS:在一个案例中执行多个其他案例

问题描述 投票:0回答:1

所以有可能将这个案例转变成另一个案例:

switch(variable) {
  case 1:
    // do something 1
  case 2:
    // do something 2
    break;
  case 3:
    // do something 3
    break;
}

但是如果我们想在完成主案例后执行多个其他案例,或者在主案例之后直接执行其他不是的案例怎么办?
例如伪代码:

switch(variable) {
  case 1:
    // do something 1
    break;
  case 2:
    // do something 2
    break;
  case 3:
    // do something 3
    execute case 2;
    execute case 1;
    break;
}

我研究了标记语句的选项,但它似乎在这里不起作用。
我在这里看到的唯一选择是为每种情况创建新函数,但我想知道 - 是否有更好、更干净、更易读和/或更短的选项?

我正在寻找所有提示 - 无论是我缺少的某个关键字、您干净利落地完成此操作的个人提示,还是库,甚至来自其他语言(如打字稿等)的命题。

javascript switch-statement goto
1个回答
0
投票

尼克帕森提出了这个很棒的想法:

也许将整个开关包装在一个接受变量的函数中并进行递归调用?

在这种情况下效果非常好;因此,将其合并到我发布的示例中并接受它作为答案:

mySwitch(variable);
function mySwitch(_v) {
  switch(_v) {
    case 1:
      // do something 1
    break;
    case 2:
      // do something 2
    break;
    case 3:
      // do something 3
      mySwitch(2);
      mySwitch(1);
    break;
  }
}

它很干净,可以解决问题...此外 - 如果您在 switch 语句通常所在的位置声明函数(例如在某个外部函数内),您将能够更改在外部函数中声明的变量,就像您一样能够进入 switch 语句。

© www.soinside.com 2019 - 2024. All rights reserved.