string.prototype.at()不能直接提取http状态码首位数字,因status是number类型,须先转字符串如string(res.status).at(0);需防范res.status为0/undefined等边界情况。

String.prototype.at() 不能直接用于提取 HTTP 状态码的首位数字,因为它操作的是字符串中的字符位置,而状态码本身通常是一个数字(如 200、404),不是字符串——必须先转为字符串才能用 at()。
状态码需先转成字符串才能使用 at()
原始 API 返回的状态码(例如 response.status)是 number 类型。JavaScript 中 at() 只定义在 String.prototype 上,对数字调用会报错:
-
200.at(0)→ ❌ TypeError: 200.at is not a function -
String(200).at(0)→ ✅"2" -
(200 + "").at(0)→ ✅"2"
推荐写法:简洁且语义清晰
提取首位最常用、最安全的方式是:
-
String(res.status).at(0)—— 显式转换,可读性强 -
`${res.status}`.at(0)—— 模板字面量隐式转串,也直观 - 避免
res.status.toString().charAt(0),虽然等效,但at()支持负索引(如.at(-1)取末位),更现代灵活
注意边界情况:状态码可能非标准或缺失
实际开发中,res.status 可能为 0(如跨域失败、网络中断)、undefined(fetch 被 reject 时未进入 then)或非常规值(如自定义 mock 状态)。建议加一层防护:
- 确保在
response.ok为true或明确拿到有效status后再处理 - 简单兜底:
String(res.status || 0).at(0) || "0" - 若需分类判断(如区分 2xx/4xx/5xx),直接用
Math.floor(res.status / 100)更可靠,无需字符串操作
不建议的误用场景
不要对整个响应体(如 JSON 字符串)或错误消息文本调用 at(0) 来“猜”状态码——这不可靠。状态码应始终来自 response.status 属性,它是 HTTP 协议规定的权威字段。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











