at() 是 ES2025 引入的负索引访问方法,统一支持数组和字符串,-1 表示末尾元素,越界返回 undefined,不修改原数据,Chrome92+/Firefox90+/Safari15.4+/Node.js16.6+ 原生支持。
at() 是 JavaScript 在 ES2025 中正式引入的方法,专为简化**负索引访问**而设计,统一支持数组和字符串,解决了传统方括号语法无法直接使用负数索引的痛点。
过去访问倒数第 n 个元素需写成 arr[arr.length - n] 或 str[str.length - n],易出错且冗长。现在只需 arr.at(-1) 或 str.at(-2),语义清晰:-1 表示最后一个,-2 表示倒数第二个……无需关心长度。
[10, 20, 30].at(-1) → 30
"hello".at(-1) → "o"
undefined(而非 undefined 或报错),行为一致且安全相比 arr[-1](始终返回 undefined,因为负数不是合法属性名),at() 明确将负索引解释为“从末尾计数”,并正确处理边界:
[].at(-1) → undefined(空数组)"a".at(-5) → undefined(负索引超出范围)[42].at(0) 和 [42].at(-0) 都返回 42(-0 被规范转为 0)at() 是只读方法,不改变数组或字符串本身,符合函数式编程习惯。它不依赖 this 的可变状态,也不触发 getter/setter,行为可预测。
length 或 toString
Chrome 92+、Firefox 90+、Safari 15.4+ 及 Node.js 16.6+ 均原生支持。如需兼容旧环境,可用简单 polyfill:
if (!Array.prototype.at) {
Array.prototype.at = function(n) {
const len = this.length;
return n >= 0 ? this[n] : this[len + n];
}
;
}