JavaScript switch 语句
当一个变量需要和多个固定值做比较时,用 if/else 会写得又长又乱,此时 switch 语句更清晰:它像"多路开关",根据表达式的值跳到对应的 case 分支执行。
基本语法
switch 会把表达式的值与每个 case 依次比较,命中后执行该分支代码:
let day = 3;
switch (day) {
case 1:
console.log("星期一");
break;
case 2:
console.log("星期二");
break;
case 3:
console.log("星期三"); // 输出:星期三
break;
default:
console.log("其他");
}
break 的作用
break 表示执行完当前分支立即跳出 switch。漏写 break 会继续向下执行,产生"穿透"(fall-through):
let num = 1;
switch (num) {
case 1:
console.log("命中 1"); // 输出:命中 1
// 这里故意不写 break
case 2:
console.log("穿透到 2"); // 输出:穿透到 2
break;
}
大多数情况下每个 case 末尾都要写 break。
default 分支
default 在所有 case 都不匹配时执行,起兜底作用,类似 else:
let fruit = "西瓜";
switch (fruit) {
case "苹果":
console.log("1 元");
break;
case "香蕉":
console.log("2 元");
break;
default:
console.log("未知水果"); // 输出:未知水果
}
多个 case 共享一段代码
多个值要执行相同逻辑时,可以把 case 连续并列写在一起:
let level = "B";
switch (level) {
case "A":
case "B":
console.log("优秀"); // 输出:优秀
break;
default:
console.log("继续努力");
}
switch 使用严格比较
switch 的比较是严格相等 ===,不会做类型转换:
let n = 1;
switch (n) {
case "1": // 字符串 "1" 不等于数字 1
console.log("字符串一");
break;
case 1:
console.log("数字一"); // 输出:数字一
break;
}
小结
switch 适合"一个值匹配多个固定选项"的场景。记住三点:分支末尾写 break 防止穿透、用 default 兜底、比较采用严格相等 ===。