代码样式
<script>
//注意区分这两组switch case多分支语句
switch (值) {
case '1':
// 这里可以写很多行代码
break;
case '2':
// 这里可以写很多行代码
break;
case '3':
// 这里可以写很多行代码
break;
default:
//这里写默认执行的代码,即前面代码都不能执行时才执行的
}
switch (值) {
case 1:
// 这里可以写很多行代码
break;
case 2:
// 这里可以写很多行代码
break;
case 3:
// 这里可以写很多行代码
break;
default:
//这里写默认执行的代码,即前面代码都不能执行时才执行的
}
</script>
(1)第一组switch case多分支语句中,switch()中的值是字符串;第二组switch case多分支语句中,switch()中的值是number。
注:在使用switch case多分支语句时,switch()中的值必须与case后的值保持全等,即值的内容与类型都必须相等。
(2)当switch()中的值与某一个case后的值全等时,则执行该case后的代码,代码执行完毕,关键字break结束整个switch case多分支语句;若没有一个case后的值与switch()中的值全等时,则执行default中的代码。
案例实现
(1)输入任意字符,判断是星期几
注意观察以下两种switch case后的值
第一种是数字,num % 7后隐式转换成数字
<script>
var num = prompt("");
switch (num % 7) {
case 1:
console.log("星期一");
break;
case 2:
console.log("星期二");
break;
case 3:
console.log("星期三");
break;
case 4:
console.log("星期四");
break;
case 5:
console.log("星期五");
break;
case 6:
console.log("星期六");
break;
case 0:
console.log("星期日");
break;
default:
console.log("请输入数字");
}
</script>
控制台查看:
第二种是字符
<script>
var num = prompt("");
switch (String(num % 7)) {
case "1":
console.log("星期一");
break;
case "2":
console.log("星期二");
break;
case "3":
console.log("星期三");
break;
case "4":
console.log("星期四");
break;
case "5":
console.log("星期五");
break;
case "6":
console.log("星期六");
break;
case "0":
console.log("星期日");
break;
default:
}
</script>
(2)石头剪刀布的游戏实现:1代表石头 2代表剪刀 3代表 布;parseInt(Math.random()*3) + 1 随机生成123的公式
<script>
// 计算机随机生成一个数
var num = parseInt(Math.random() * 3) + 1
var myNum = Number(prompt('输入1-3: 1代表石头 2代表剪刀 3代表 布'))
switch (num) {
case 1:
// 继续判断玩家的数
switch (myNum) {
case 1:
console.log('平局')
break
case 2:
console.log('输了')
break
case 3:
console.log('赢了')
break
}
break
case 2:
// 继续判断玩家的数
switch (myNum) {
case 1:
console.log('赢了')
break
case 2:
console.log('平局')
break
case 3:
console.log('输了')
break
}
break
case 3:
// 继续判断玩家的数
switch (myNum) {
case 1:
console.log('输了')
break
case 2:
console.log('赢了')
break
case 3:
console.log('平局')
break
}
break
}
</script>
控制台查看:
case穿透性
当某一case后没有写break时,这一case及之后的代码将都会执行。
case穿透性案例
(1)小案例
<script>
var num = Number(prompt('输入1-3之间的数: '));
switch (num) {
case 1:
console.log('1314');
break;
case 2:
console.log('1315');
case 3:
console.log('1316');
default:
console.log("输错数要打屁股!");
}
</script>
控制台查看:
观察控制台截图可知,case 1后的代码中有break,故输入数字1时,控制台只会输出case 1中的代码;当输入数字2时,由于case 2与case 3中都没有break,故case 2及之后的代码都会执行。
(2)判断每个月有多少天
<script>
var month = Number(prompt('输入1-12之间的数: '));
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log(month + '月有' + '31天');
break;
case 4:
case 6:
case 9:
case 11:
console.log(month + '月有' + '30天');
break;
case 2:
//二月需要判断是平年还是闰年,此处假设是平年
console.log(month + '月有' + '29天');
break;
default:
console.log("输错数要打屁股!");
}
由于case的穿透性,当你输入1、3、5、7、8、10、12时,控制台都会显示有31天,当你输入4、6、9、11时,控制台都会显示有30天。