2026-10-26 09:11:47
JavaScript 中 switch 语句是一种多分支选择结构,用于根据表达式的值匹配不同的 case 并执行对应的代码块。
核心用法语法结构
switch (expression) { case value1: // 代码块1 break; case value2: // 代码块2 break; default: // 默认代码块}expression:要评估的表达式(变量、常量或直接值)。
case valueX:与表达式比较的值,匹配时执行对应代码块。
break:终止 switch 执行,防止“穿透”到下一个 case。
default(可选):无匹配时执行的默认代码块。
执行流程
计算 expression 的值,按顺序与每个 case 的值比较。
匹配时执行对应代码块,遇到 break 则退出 switch;若无 break,会继续执行后续 case(即使不匹配)。
无匹配时执行 default 块(若存在)。
严格比较case 使用 === 严格比较,需确保值和类型均匹配。例如:
switch (42) { case "42": // 不匹配,类型不同 console.log("字符串42"); break; case 42: // 匹配 console.log("数字42");}break 的作用省略 break 会导致“穿透”:
switch (2) { case 1: console.log("1"); case 2: console.log("2"); // 输出:2 case 3: console.log("3"); // 继续输出:3(因无break)}default 的位置可放在任意位置(通常在末尾),但建议保持逻辑清晰:
switch (value) { default: console.log("默认值"); break; case 1: console.log("1");}表达式类型支持任意类型(数字、字符串、布尔值等),甚至对象(但需谨慎):
const obj = { id: 1 };switch (obj) { case { id: 1 }: // 不匹配,对象比较引用 break; case obj: // 匹配(同一引用) console.log("匹配对象");}替代多条件 if-else当需要比较一个变量的多个固定值时,switch 更清晰:
// if-else 版本if (day === "Mon") { /*...*/ }else if (day === "Tue") { /*...*/ }// switch 版本switch (day) { case "Mon": /*...*/ break; case "Tue": /*...*/ break;}枚举值处理如状态码、选项菜单等:
const status = 404;switch (status) { case 200: console.log("成功"); break; case 404: console.log("未找到"); break; // 输出:未找到}通过合理使用 switch,可以显著提升代码可读性和维护性。