javascript中用switch匹配http状态码需确保状态码为数字类型,每个case后加break防穿透,default兜底;可结合if按范围分组处理,推荐用常量或映射对象提升可读性,并注意类型转换与自定义状态码覆盖。

在 JavaScript 中,用 switch 匹配 HTTP 状态码非常直接:把状态码变量作为 switch 的表达式,每个 case 写具体的数字(如 200、404),注意别忘了 break 防止穿透,再加个 default 处理未覆盖的状态。
基础写法:按数字精确匹配
HTTP 状态码是整数,switch 天然适合做离散值分支。例如处理 API 响应:
- 状态码必须是数字类型(不是字符串),否则
case 200不会匹配"200" - 每个
case后建议写break,避免意外执行后续分支 -
default是良好实践,用于兜底未知或异常状态
示例:
switch (response.status) {
case 200:
console.log('请求成功');
break;
case 401:
console.log('未授权,请登录');
break;
case 404:
console.log('资源不存在');
break;
case 500:
console.log('服务器内部错误');
break;
default:
console.log(`未处理的状态码:${response.status}`);
}
按状态码范围分组:用 if + switch 结合
HTTP 状态码有语义分组(如 2xx 成功、4xx 客户端错误),switch 本身不支持范围,但可以先用 if 提取类别,再用 switch 细分:
智能模型自动切换 V5.0.2 - 多模态感知,自动识别图片/视频/音频/代码/文本任务,切换最优模型。支持图片理解(qwen3-vl-plus)、视频音频(qwen3.5-plus)、代码(glm-5)、Office文档(MiniMax-M2.5)、推理等场景。零感知切换,无需手动操作。
- 先用
Math.floor(status / 100)得到状态码首位(2 表示成功,4 表示客户端错误等) - 再对首位数字做
switch,内部用if或嵌套switch处理具体码
示例:
const category = Math.floor(response.status / 100);
switch (category) {
case 2:
switch (response.status) {
case 200: /* ... */ break;
case 201: /* ... */ break;
default: console.log('其他成功状态'); break;
}
break;
case 4:
switch (response.status) {
case 400: /* ... */ break;
case 403: /* ... */ break;
case 429: console.log('请求过于频繁'); break;
default: console.log('其他客户端错误'); break;
}
break;
default:
console.log('非 2xx/4xx 状态,需特别关注');
}
增强可读性:用常量或映射对象辅助
硬写数字(如 case 418)不易理解,推荐提前定义语义化常量或使用映射对象提升维护性:
- 定义常量:如
const STATUS_TEAPOT = 418;,然后case STATUS_TEAPOT: - 或用对象映射:将状态码转为描述字符串,再对字符串
switch(适合状态码少、描述固定场景) - 注意:若用字符串映射,确保转换逻辑健壮(如
statusMap[status] ?? 'unknown')
常见陷阱提醒
实际使用中容易踩的坑:
-
类型不一致:fetch 的
response.status是数字,但有些封装库可能返回字符串,务必用Number()或parseInt()转换 - 漏写 break:导致多个 case 连续执行,逻辑错乱
-
忽略 3xx 重定向:fetch 默认不跟随重定向,
response.status可能是 302,需明确是否要处理 -
服务端自定义状态码:如 499(Nginx 客户端关闭)、599(网络超时),应在
default或单独case中考虑
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










