Array.prototype.at() 是 ES2022 引入的安全访问数组元素方法,支持负数索引(如 -1 表示末尾),越界返回 undefined 而不报错,比 arr[arr.length-1] 更简洁安全,现代浏览器及 Node.js 16.6+ 原生支持。

Array.prototype.at() 是 ES2022 引入的便捷方法,专门用于安全访问数组元素,尤其擅长处理负数索引——它直接从末尾开始计数,无需手动计算 array.length + negativeIndex。
负数索引的直观含义
传入负数时,at() 把 -1 当作最后一个元素,-2 是倒数第二个,依此类推:
-
[10, 20, 30].at(-1)→30 -
[10, 20, 30].at(-3)→10 -
[10, 20, 30].at(-4)→undefined(越界,不报错)
对比传统写法,更简洁安全
过去取最后一个元素常用 arr[arr.length - 1],但需确保数组非空,否则会得到 undefined 或出错;而 at(-1) 天然支持空数组和越界场景:
-
[].at(-1)→undefined -
[5].at(-10)→undefined - 无需提前判断长度,代码更扁平、可读性更强
适用常见场景
适合快速获取末尾元素、实现“栈式”操作或简化切片逻辑:
立即学习“Java免费学习笔记(深入)”;
- 取最后两个元素:
const lastTwo = [a, b, c, d].slice(-2)(注意:slice 支持负数,但 at 只取单个) - 安全读取可能不存在的末位配置:
config?.items?.at(-1)?.id - 替代
array[array.length - 1]或array.slice(-1)[0]等冗余写法
浏览器兼容性提醒
现代浏览器(Chrome 92+、Firefox 90+、Safari 15.4+)及 Node.js 16.6+ 原生支持。如需兼容旧环境,可用简单 polyfill:
if (!Array.prototype.at) {<br> Array.prototype.at = function(n) {<br> const len = this.length;<br> return n >= 0 ? this[n] : this[len + n];<br> };<br>}


















