switch语句(多分支语句)多选一
//基于不同条件来执行不同的代码,当要针对变量来设置一系列特定值的选项进行匹配时,就可以使用switch
switch (表达式) {
case 常量1:
//语句1;
break;//break不能丢!
case 常量2:
//语句2;
break;
...
default:
//前面的case都匹配不上,执行最后的语句;
}
二.执行思路
利用判断的变量的值和case后面的常量进行匹配。如果匹配上,执行该case里的语句;如果没有匹配上,执行default里面的语句。
三.注意事项
switch ()的表达式和case 后面的常量可以是任意的类型,字符串,数字都行,但一般为可枚举的值;
(举例:由于表单、prompt函数返回的是字符串类型,所以case后面常量要相应地写字符串,或者把prompt返回的值转换为数字型,才能执行case里的语句,否则匹配不上只能执行default里的语句。)
在实际开发中,表达式常写成变量;
变量的值和case的常量必须是===全等才能匹配上,即值和数据类型都相等;
break 如果当前的case里面没有break,则不会退出switch,无需匹配下一个case的常量就执行其语句。
四.switch语句和if else if语句的区别
一般情况下,两个语句可以相互替换;(switch做值的匹配,if else if语句做逻辑判断)
switch语句通常处理case为比较确定的值的情况,而if else if语句更加灵活,常用于范围判断;
switch语句进行条件判断后直接执行到相匹配的条件语句,效率更高。而if else if语句需要从上至下依次判断条件,有几种条件就要判断几次;
当分支较少时。if else if语句执行效率比switch高;
当分支较多时,switch语句的执行效率比较高,且结构更清晰。
五.代码示例
//使用if else if语句的写法:
<body>
<!-- <button onclick="show()">点击</button> -->
</body>
<script>
function rand(min,max) {
return Math.floor(Math.random()*(max-min)+min);
}
function show() {
var n=rand(0,4);
console.log(n);
if (n==0) {
alert("举头望明月,低头思故乡");
} else if (n==1) {
alert("长风破浪会有时,直挂云帆济沧海");
} else if (n==2) {
alert("举杯邀明月,对影成三人");
} else {
alert("天生我材必有用,千金散尽还复来");
}
}
show()
</script>
//使用switch语句的写法:
function rand(min,max) {
return Math.floor(Math.random()*(max-min)+min);
}
function show() {
var n=rand(0,4);
console.log(n);
switch (n) {
case 0:
alert("举头望明月,低头思故乡");
break;
case 1:
alert("长风破浪会有时,直挂云帆济沧海");
break;
case 2:
alert("举杯邀明月,对影成三人");
break;
default:
alert("天生我材必有用,千金散尽还复来");
}
}
show();