【问题标题】:switch statement not working, only first case triggers actionsswitch 语句不起作用,只有第一种情况会触发操作
【发布时间】:2010-12-19 04:13:01
【问题描述】:

在昨天了解了 switch 语句之后,我是新手。

由于某种原因,这不起作用。

检查案例(2); 检查案例(1); 检查案例(0); 函数 checkCase(priorityType){ 开关(优先类型){ 案例2: 打印(优先类型); 休息; 情况1: 打印(优先类型); 休息; 案例0: 打印(优先类型); 休息; } }

'alert(2)' 被触发,1 和 0 没有。 我已经颠倒了案例 2:与案例 1:并再次运行代码并再次触发 2,但没有触发 1。 我也尝试过添加 break;并继续;案件,但仍然一无所获。

这是为什么呢?我做错了什么? - - - - - - - - - - - 编辑 - - - - - - - - - - - - - - 很多回复说我需要添加'break;'我现在对每一行都做了。 还是没有输出。我还将“警报”更改为“打印”。没有不同。

-------------edit2------------------------ 我的错,“休息”现在正在起作用。不知道我上次检查时发生了什么。可能需要重启ff。

【问题讨论】:

  • Here's an example 使用您的代码,但我将其改回 alert()。随着休息时间,您会看到 3 个警报。
  • Firefox 通常会缓存页面和数据,因此如果您更新代码,您可能需要清除缓存或重新启动浏览器才能看到更改。

标签: javascript switch-statement


【解决方案1】:

两个问题:使用alert调试有问题,需要break语句。

尝试在square free shell 中添加breaks 并使用print,我想你会看到正确的结果。

checkCase(2);
checkCase(1);
checkCase(0);
function checkCase(priorityType){
switch(priorityType){
     case 2:
         print(priorityType);               break;
        case 1:
        print(priorityType);            break;
        case 0:
        print(priorityType);   break;
     }
}

【讨论】:

    【解决方案2】:

    您必须在每个案例之后break;

    function checkCase(priorityType){
        switch(priorityType){
            case 2:
                 alert(priorityType);
            break;         
    
            case 1:
                alert(priorityType);    
            break;        
    
            case 0:
                alert(priorityType);
            break;
    
            //my two cents
            default:
                alert("No intended code for"+priorityType);
         }
    }
    
    checkCase(2);
    checkCase(1);
    checkCase(0);
    

    【讨论】:

      【解决方案3】:

      因为没有break语句,一旦找到匹配的case,就会触发它和后面的case。

      所以当你这样做时:

      checkCase(2);
      

      你会得到:

      alert(2);
      alert(2);
      alert(2);
      

      当你这样做时:

      checkCase(1);
      

      你会得到:

      alert(1);
      alert(1);
      

      当你这样做时:

      checkCase(0);
      

      你会得到:

      alert(0);
      

      如果你希望得到:

      alert(2);
      alert(1);
      alert(0);
      

      您需要更改开关以包含 break; 语句。

      function checkCase(priorityType){ 
         switch(priorityType){
           case 2:
               alert(priorityType);
               break;           
           case 1:
              alert(priorityType);       
              break;     
           case 0:
              alert(priorityType);
              break;
           }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        • 1970-01-01
        相关资源
        最近更新 更多