switch处理多状态的核心是将离散确定的状态值(如数字、字符串)严格匹配并映射到对应操作,需统一类型、每个case后加break防穿透,default兜底不可少,适用于API状态、路由路径、权限角色等有限固定值场景。

用 switch 处理多状态,核心是把离散、确定的状态值(比如 API 返回的字符串、数字状态码、用户角色、表单结果)映射到对应操作,比一长串 if-else if-else 更清晰、易维护。
明确表达式和 case 值必须严格相等
switch 内部用的是 === 判断,类型和值都要一致。比如:
-
case 200:只匹配数字200,不匹配字符串"200" -
case "success":只匹配小写无空格的字符串,"Success"或"success "都不命中 - 需要统一处理时,提前转换:比如
status.trim().toLowerCase()
每个 case 后必须加 break,除非有意穿透
漏掉 break 会导致“穿透”,即执行完当前分支后继续跑下一个 case 的代码。这容易引发 bug,但也能被合理利用:
- 常规情况:每个
case结尾写break - 共享逻辑时可省略:比如多个状态都触发“重试”逻辑,就连续写几个
case,共用一段代码再break
default 分支不能少,且建议放最后
它兜底处理所有未预料到的状态,避免静默失败:
立即学习“Java免费学习笔记(深入)”;
- 哪怕你认为“不可能有其他值”,也加上
default并至少打个日志或抛错 - 虽然语法允许
default放在中间,但习惯上放末尾,符合阅读直觉 - 例如处理 HTTP 状态:
case 200、case 404、case 500之后,default可以统一提示“未知响应状态”
适合 switch 的典型多状态场景
不是所有多条件都该用 switch,它只适合值固定、数量有限、无需计算的场景:
- API 响应状态:
case "pending"、case "success"、case "error" - 路由路径判断:
case "/home"、case "/profile"、case "/settings" - 用户权限角色:
case "admin"、case "editor"、case "viewer" - 表单提交结果:
case "validated"、case "submitted"、case "failed"


















