首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中有没有可能在switch语句中使用"goto“?

在javascript中有没有可能在switch语句中使用"goto“?
EN

Stack Overflow用户
提问于 2015-11-21 12:24:36
回答 2查看 7.4K关注 0票数 7

这是我用JS编写的示例程序。我必须在switch语句中迭代或循环。所以我用了goto,但是它不工作。

有没有其他选项来循环这个或者是我的语法错误?

代码语言:javascript
复制
var input = 1;
switch (input)
{
    case 1: 
        ...
        break;
    case 2: 
        ...
        break;
    case 3: 
        ...
        if (..) { }
        else    
        {
            goto case 2;
        }
        break;
    default: 
        alert("No Return");
        break;
}
EN

回答 2

Stack Overflow用户

发布于 2015-11-21 14:33:36

我使用了以下技术来实现这一点:

代码语言:javascript
复制
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
}
票数 3
EN

Stack Overflow用户

发布于 2015-11-21 15:58:55

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

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

为了解决你的问题,按照评论中的建议,组织你的案例(将3移到2上),这样你就可以使用fall-through:

代码语言:javascript
复制
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;
}

在这种情况下,一定要注释掉失败的代码,这样看你的代码的人就不会认为这是一个bug。您可能还需要添加一个提示,以便您的linter不会抱怨。

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

代码语言:javascript
复制
function someLogicFor2Or3() { ... }

    case 2: 
        someLogicFor2OrMaybe3();
        break;
    case 3: 
        ...
        if (..) { }
        else someLogicFor2OrMaybe3();
        break;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33839705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档