有没有可能在javascript中使用switch语句中的“goto”?

时间:2015-11-21 04:24:36

标签: javascript switch-statement goto

这是我在JS中的示例程序。我必须在switch语句中迭代或循环。所以我使用了goto,但它没有用。

是否有其他选项可以循环播放或我的语法错误?

var input = 1;
switch (input)
{
    case 1: 
        ...
        break;
    case 2: 
        ...
        break;
    case 3: 
        ...
        if (..) { }
        else    
        {
            goto case 2;
        }
        break;
    default: 
        alert("No Return");
        break;
}

2 个答案:

答案 0 :(得分:1)

我使用以下技术来做到这一点:

var input = 1;
while (1) {
  switch (input) {
  case 1: 
    ...
    break; // switch

  case 2: 
    ...
    break; // switch

  case 3: 
    ...
    if (..) { }
    else {
      input = 2; // goto case 2;
      continue;  // while
    }
    break; // switch

  default: 
    alert ("No Return");
    break;  // switch
  }
  break;  // while
}

答案 1 :(得分:1)

  

是否有可能在javascript中的switch语句中使用“goto”?

不,没有可能在switch语句中或其他任何地方使用“goto”,因为JavaScript没有这样的声明。

要按照评论中的建议解决您的问题,请整理您的案例(移动3以上2),以便您可以使用堕落:

var input = 1;
switch (input)
{
    case 1: 
        ...
        break;
    case 3: 
        ...
        if (..) { ...; break; }
        // fall through to case 2
    case 2: 
        ...
        break;
    default: 
        alert("No Return");
        break;
}

在这种情况下,请务必对漏洞进行评论,以便查看代码的人不会认为这是一个错误。您可能还需要添加一个提示,以便您的linter不会抱怨。

或者,只需将逻辑公共2和3放在一个小函数中:

function someLogicFor2Or3() { ... }

    case 2: 
        someLogicFor2OrMaybe3();
        break;
    case 3: 
        ...
        if (..) { }
        else someLogicFor2OrMaybe3();
        break;