我昨天在了解它之后开始编写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。
答案 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;
}
}