1.switch语句是用来选择要执行的多个代码块之一(类似if...else if... else if... (n个)...else),见6举例
2.语法:
switch(表达式n) { case 值1:语句体1;break; case 值2:语句体2;break; case 值3:语句体3;break; ... default:语句体n; }
3.说明:
- switch、case必不可少
- break、default为可选项
<script> // 比较a、b都输入数字1后的结果 var a=prompt("key the number of 1 or 2");//a为string型 var b=prompt("key the number of 1 or 2")*1;//“*1”后输入的数b转变为number类型 switch(a) { case 1:x="长城";break; //case后的值是个数值number类型,而a为string型 //达不到全等于“===”条件,所以不匹配长城,而选择了跳转到default后面的语句 case 2:x="故宫";break; default:x="颐和园"; } console.debug("x:"+x)//控制台结果:x:颐和园 switch(b) { case 1:y="长城";break; // 因b已转化为number类型,与case 1 匹配,执行了“长城”这条语句体 case 2:y="故宫";break; default:y="颐和园"; } console.debug("y:"+y)//控制台结果:y:长城 </script>控制台输出结果:
5.执行过程:
- 计算表达式n结果,将表达式的值依次与case后面的值做比较,如果匹配,则执行该case后面的语句体;如果该语句体后面有break则执行完该语句体后跳出switch,如无break则无需判断直接进入下一个case分支或default语句,见下面举例
- 如果所有case后面的值都与表达式n值不匹配,则执行default后面的语句体,如果没有default,则该switch语句什么都没做就结束
<script type="text/javascript"> //输入一个月份,输出该月份有多少天,不考虑闰年 // 使用if var month=prompt("请输入一个月份")*1; if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){ console.debug("if 语句:"+month+"月有31天。"); } else if (month==4 || month==6 || month==9 || month==11){ console.debug("if 语句:"+month+"月有30天。"); } else if (month==2){ console.debug("if 语句:"+month+"月有28天。"); } else{ console.debug("你输入的月份不正确!"); } // 使用switch switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: console.debug("switch 语句:"+month+"月有31天。"); break; // 根据具体题目,利用break,简化书写 // 当输入的月份与1符合时,因没有break,仍会跳到后面的case再与后面的值比较,直到12月份输出12月份后面的结果,再通过break跳出switch // 当所有出现31天的情况都走过仍没有时进入下面case 2的比较 case 2: console.debug("switch 语句:"+month+"月有28天。"); break; case 4: case 6: case 9: case 11: console.debug("switch 语句:"+month+"月有30天。"); break; default: console.debug("你输入的月份不正确!"); } </script>输入4之后,控制输出结果: