<script>
/**合理穿透:当存在多种值需要执行相同代码时使用穿透可以节省代码
* 用户输入某一个月份,告诉用户这个月份属于什么季节
* 12,1,2 冬季
* 3,4,5 春季
* 6,7,8 夏季
* 9,10,11 秋季
*/
let month = +prompt("请输入月份");
switch (month){
case 12:
case 1:
case 2:
alert("冬季");
break;
case 3:
case 4:
case 5:
alert("春季");
break;
case 6:
case 7:
case 8:
alert("夏季");
break;
case 9:
case 10:
case 11:
alert("秋季");
break;
default:
alert("你来自火星吧?");
break;
}
</script>
注意事项
-
1.表达式的结果要和值一定是全等的关系===
-
2.break作用:结束该switch语句,所以一般情况下要加上,如果不加上则会发生穿透
-
穿透:从上一个case代码快执行到下一个case代码快
-
break关键字的作用就是防止穿透
-
-
3.default语句可以写在任何地方,也可以省略,但是一般写在最后,这是一种代码规范
if 多分支和switch的区别
共同点
都能实现多分支选择, 多选1
大部分情况下可以互换
区别:
switch…case语句通常处理case为比较确定值的情况,而if…else…语句更加灵活,通常用于范围判断(大于,等于某个范围)。
switch 语句进行判断后直接执行到程序的语句,效率更高,而if…else语句有几种判断条件,就得判断多少次
switch 一定要注意 必须是 === 全等,一定注意 数据类型,同时注意break否则会有穿透效果
结论:
当分支比较少时,if…else语句执行效率高。
当分支比较多时,switch语句执行效率高,而且结构更清晰。