switch语句适合处理多个固定值分支判断,通过严格相等比较匹配case,需用break防止穿透;case值仅支持常量或字面量,default分支强烈建议添加以兜底异常情况。

JavaScript 中的 switch 语句适合处理多个固定值的分支判断,比一长串 if...else if...else 更清晰、更易读,也更利于引擎优化。
基本语法和执行逻辑
switch 会先计算一次表达式的值,然后依次与每个 case 后的字面量或常量进行**严格相等(===)比较**,一旦匹配就执行对应代码块。注意:它不会自动跳出,必须用 break 终止,否则会“穿透”执行后续 case(包括 default)。
示例:
const day = 3;
switch (day) {
case 1:
console.log('周一');
break;
case 2:
console.log('周二');
break;
case 3:
console.log('周三'); // 匹配,执行
break; // 阻止穿透
default:
console.log('其他日期');
}
必须写 break 的常见陷阱
漏写 break 是新手高频错误,会导致意料之外的连续执行。
- 如果多个 case 要执行相同逻辑,可以故意省略中间的
break(称为“fall-through”),但需加注释说明 - 最后一个
case或default后不写break通常不影响结果,但为统一风格建议保留 - 使用 ESLint 等工具可开启
no-fallthrough规则自动提示未注释的穿透
case 值只能是常量或字面量
case 后不能跟变量、函数调用或表达式,只支持编译期可确定的值:
- ✅ 支持:
case 42、case 'hello'、case true、case null、case undefined - ❌ 不支持:
case x + 1、case getValue()、case arr[0] - 若需运行时计算判断,应改用
if...else
default 分支不是必须的,但强烈建议加上
default 相当于“兜底”,在所有 case 都不匹配时执行。即使你认为已覆盖所有情况:
- 未来可能新增取值(如 API 返回新状态码)
- 输入可能非法(如用户传入非预期字符串)
- 加上
default并抛错或打日志,能更快暴露问题
例如处理 HTTP 状态码:
switch (status) {
case 200:
handleSuccess();
break;
case 401:
redirectToLogin();
break;
case 404:
showNotFound();
break;
default:
console.warn('未知状态码:', status);
throw new Error(`不支持的状态码: ${status}`);
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











