switch语句不起作用,只有第一种情况触发动作

时间:2010-12-19 04:13:02

标签: javascript switch-statement

我昨天在了解它之后开始编写switch语句。

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

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;
     }
}

触发'alert(2)',1和0不触发。 我已经颠倒了案例2:案例1:再次运行代码,再次触发2,1不是。 我也尝试过添加休息;并继续;对案件,但仍然没有。

为什么?我做错了什么? - - - - - - - - - - - 编辑 - - - - - - - - - - - - - - 很多回复说我需要添加'break;'我现在对每一行都做了。 仍然没有输出。我也将'alert'改为'print'。没有不同。

------------- EDIT2 ----------------------- 我的坏,'休息'现在正在运作。我不确定上次检查时发生了什么。也许需要重启ff。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

两个问题:使用alert进行调试存在问题,您需要break个语句。

尝试在square free shell中添加break并使用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 :(得分:1)

由于没有中断语句,一旦找到匹配的案例,就会触发它和随后的案例。

所以当你这样做时:

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;
     }
}