Switch语句中的跳转案例(javascript)(更新)

时间:2017-04-11 04:22:45

标签: javascript

我想在javascript中询问switch case语句。

     switch(ch){
      case 0:
              //do something, if condition match ,so go to case 2 and 3 (no need to go case 1)
             //if not match, go to case 1, 2, and 3
    break;
      case 1:
             //..
    break;
      case 2:
             //..
    break
      case 3:
             //...

   }

在我的代码中有4个案例。在案例0中存在一个条件,它将跳过案例1并转到案例2.我该怎么做?

4 个答案:

答案 0 :(得分:1)

switch语句是长if else语句的替代方法(请参阅文档here)。在您的情况下,我认为您应该使用常规if语句。

// check if it passes case1
if (condition === case1) {
  // check if it passes case1
  if (condition === case2) {
     // check if it passes case1
     if (condition === case3) {
       // do something here...
     }
  }
}

您也可以使用ternary operator,但在添加更多条件时可能会有点难以阅读。

答案 1 :(得分:1)

我认为如果其他声明更符合您的要求。如果你仍然想在切换这里的例子:):



var sw = function(cs){
  switch(cs){
  case 1:
      console.log("case 1 !!!");
      sw(3);
    break;
  case 2:
      console.log("case 2 !!!");
    break;
  case 3:
      console.log("case 3 !!!");
    break;
        }
};
sw(1);




答案 2 :(得分:0)

我相信这就是你要找的东西:

function Switcher(choice){ 
    switch(choice){
       case 1: console.log(1);;
       case 4: console.log(4); break;
       case 2: console.log(2); break;
       case 3: console.log(3); break;
    }
}

然后调用Switcher(1)并查看O / P

答案 3 :(得分:0)

我今天正在研究与JavaScript中的开关相关的一些逻辑,我所研究的代码使用了一系列if和else语句,但是有很多可以合并的共享逻辑案例。

if和else语句与switch语句不完全相同,因为运行时可以使用跳转表实现它们,从而使执行顺序比if和else更快。

因为您只能在ECMAScript中继续迭代模式,所以可以通过将逻辑封装在伪循环中来破解一个看起来像跳跃的解决方案,如下所示:

(function(){

//In some function use this code

var test = 2;

Switch: while(true) switch(test){

case 2: test = 1; continue Switch;
case 1: test = 0; continue Switch;
default:alert(test);return;
};

//End code example

})();

如果需要,while(true)的条件可以更改为使用另一个变量作为状态。

这使代码尽可能地类似于使用其他语言的跳转表,并且类似的模式可以实现类似gotoduffs device的东西

另请参阅How can I use goto in Javascript?

Porting duff's device from C to JavaScript

或者这个GIST https://gist.github.com/shibukawa/315765020c34f4543665