最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何用字符串的 at() 方法取代索引访问以支持优雅的负数倒序取值
时间:2026-06-26 10:03:51 编辑:袖梨 来源:一聚教程网
at() 方法比方括号索引更适配负数取值,因其原生支持负索引(如-1表示末尾),语义清晰、安全一致;而 str[-1] 恒为 undefined,需手动计算 length 且易出错。
字符串的 at() 方法是 ES2022 引入的原生方法,它能直接支持负数索引(如 -1 表示最后一个字符),无需手动计算 str[str.length + n],比传统方括号索引更安全、更语义清晰。
为什么 at() 比 [] 更适合负数取值
传统方括号访问(str[-1])始终返回 undefined,因为字符串不支持负索引——它把负数当成了无效属性名。而 at() 明确设计为支持负偏移:从末尾向前计数,at(-1) 等价于 str[str.length - 1],且对越界负索引(如 at(-100))也统一返回 undefined,行为一致、无副作用。
常见负数取值场景与写法对比
-
取最后一个字符:
str.at(-1)✅(简洁明确) vsstr[str.length - 1]❌(需重复写length,易错) -
取倒数第二个字符:
str.at(-2)✅ vsstr[str.length - 2]❌ -
安全取末尾字符(空字符串也不报错):
"".at(-1) === undefined✅,而""[-1]也是undefined,但语义模糊
注意事项与兼容性提醒
at() 在 Node.js 16.6+ 和现代浏览器(Chrome 92+, Firefox 90+, Safari 15.4+)中可用。若需兼容旧环境,可使用简单 polyfill:
if (!String.prototype.at) {<br> String.prototype.at = function(n) {<br> const idx = Math.floor(n);<br> return idx >= 0 ? this[idx] : this[this.length + idx];<br> };<br>}
注意:该方法只适用于字符串和数组(Array.prototype.at 同理),不改变原字符串,返回单个字符(或 undefined)。
相关文章
- mumu模拟器怎么设置一键宏 06-26
- mumu模拟器如何导入apk 06-26
- 在小红书怎样发微信号?在小红书怎样发微信号视频 06-26
- 做淘宝店铺怎么补单:做淘宝店铺怎么补单最快 06-26
- 我嘎嘎乱杀能量石获取方法指南 06-26
- 京东的满减凑单完成后可以退吗?京东满减凑单再退款会有影响吗 06-26