格式:
switch(表达式){
case 表达式A:
语句A;
break;
case 表达式B:
语句B;
break;
… …
default:
前面所有case都不匹配执行的代码;
break;
}
let num = parseInt(prompt('请输入数字:'));
let day = num % 7;
switch (day) {
case 1:
alert('星期一');
break;
case 2:
alert('星期二');
break;
case 3:
alert('星期三');
break;
case 4:
alert('星期四');
break;
case 5:
alert('星期五');
break;
case 6:
alert('星期六');
break;
case 7:
alert('星期日');
break;
default :
alert('其他');
break;
}
特点
- 会从上至下的依次判断每一个case是否和()中表达式的结果相等, 如果相等就执行对应case后面的代码, 如果前面所有的case都不匹配, 那么就会执行default后面的代码
- 所有的case和default只有一个会被执行, 并且只会被执行一次
注意
- case判断的是=== , 而不是== (不仅数值相同, 数据类型也要相同)
let num = 123;
switch (num) {
case "123":
console.log("字符串123"); // 因为判断的是===, 数据类型不同不执行
break;
case 123:
console.log("数值的123"); // 数据类型相同执行
break;
default:
console.log("Other"); // 不执行
break;
}
- ()中可以是常量也可以是变量还可以是表达式
switch (num) { // 变量
case 123:
console.log("数值的123"); // 执行
break;
default:
console.log("Other");
break;
}
switch (123) { // 常量
case 123:
console.log("数值的123"); // 执行
break;
default:
console.log("Other");
break;
}
switch (122 + 1) { // 表达式
case 123:
console.log("数值的123"); // 执行
break;
default:
console.log("Other");
break;
}
- case后面可以是常量也可以是变量还可以是表达式
let num = 123;
switch (123) {
// case 123: // 常量
// case num: // 变量
case 100 + 23: // 表达式
console.log("数值的123"); // 条件是 常量 变量 表达式 都会执行
break;
default:
console.log("Other");
break;
}
- break的作用是立即结束整个switch语句
在switch语句中一旦case或者default被匹配, 那么其它的case和default都会失效 - default不一定要写在最后
switch中的default无论放到什么位置, 都会等到所有case都不匹配再执行 - 和if/else中的else一样, default也可以省略
let num = 7;
switch (num) {
case 1:
console.log("1");
break;
case 2:
console.log("2");
break;
}