str.at(-1) 可优雅安全获取字符串末字符,支持负索引、空串返回 undefined,语义清晰且比 str[str.length-1] 和 str.slice(-1) 更简洁可靠,现代浏览器及 Node.js 16.6+ 均已支持。

直接用 str.at(-1) 就能优雅获取字符串的倒数第一个字符,无需计算长度或使用 slice()。
at() 方法天然支持负索引
at() 是 ES2022 引入的字符串(和数组)方法,专为简化索引访问设计。传入负数时,它自动从末尾开始计数:
-
"hello".at(-1)→"o" -
"a".at(-1)→"a" -
"".at(-1)→undefined(安全,不报错)
比传统写法更简洁安全
过去常用 str[str.length - 1] 或 str.slice(-1),但各有缺点:
-
str[str.length - 1]:空字符串时返回undefined,虽不报错,但逻辑不够直观 -
str.slice(-1):返回字符串(如"o"),但类型是string而非单个字符语义;且对空串也返回空串,不易区分“无字符”和“空字符” -
at(-1):语义清晰、返回值统一(字符或undefined)、空串/越界均安全
注意浏览器兼容性
目前主流现代浏览器(Chrome 92+、Firefox 90+、Safari 15.4+)均已支持。若需兼容旧环境,可搭配简单垫片(polyfill)或用 Babel 转译。Node.js 16.6+ 原生支持。
小技巧:结合可选链避免报错
如果字符串可能为 null 或 undefined,可组合可选链操作符:
-
str?.at(-1)—— 安全取倒数第一字符,str为空时直接得undefined - 比
str && str.at(-1)更简洁,也比三元判断更函数式

















