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 兜底、比较采用严格相等 ===。

笔记加载中…