at(-1) 更优雅是因为它原生支持负索引、语义清晰、边界安全——-1 直接表示末尾元素,空数组返回 undefined 且无副作用;而 arr[arr.length - 1] 需手动计算长度,slice(-1)[0] 有额外开销,str[-1] 则因属性访问语义失效恒为 undefined。

直接用 arr.at(-1) 就能拿到数组最后一个元素,无需写 arr[arr.length - 1],简洁又安全。
为什么 at(-1) 更优雅
at() 方法支持负索引,-1 表示倒数第一个,-2 是倒数第二个,以此类推。它内部自动处理边界,对空数组返回 undefined,不会报错或返回 undefined 以外的意外值(比如 arr[-1] 是 undefined,但那是属性访问,语义不清且不可靠)。
对比传统写法
过去常用两种方式获取末尾元素:
-
arr[arr.length - 1]:需计算长度、减 1,当arr为空时结果是undefined,虽不报错但逻辑略显冗余; -
arr.slice(-1)[0]:创建新数组再取首项,有额外内存开销,性能和可读性都不如at()。
实际使用建议
确保目标环境支持 at()(Chrome 92+、Firefox 90+、Safari 15.4+、Node.js 16.6+)。若需兼容旧环境,可用简单 polyfill:
日常开发中,只要环境允许,at(-1) 就是获取末尾元素最直接、语义最清晰的选择。

















