toReversed() 是 ES2023 新增的数组方法,不修改原数组而返回新反转数组,替代 slice().reverse() 更简洁高效,主流浏览器已支持,旧环境需 polyfill,且仅浅层反转。

toReversed() 基本用法
直接调用即可,语法简洁:
const newArr = arr.toReversed();- 原数组
arr完全不变 - 返回一个元素顺序完全颠倒的新数组
例如:
let original = [1, 2, 3, 4];let reversed = original.toReversed();
console.log(original); // [1, 2, 3, 4](未变)
console.log(reversed); // [4, 3, 2, 1]
替代 reverse().slice() 的更优写法
过去为避免改原数组,常写 arr.slice().reverse() 或 [...arr].reverse()。这些方式需两步操作,且语义不够清晰。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
toReversed()一步到位,意图明确 - 性能更优:引擎可做内部优化,无需先复制再反转
- 代码更易读:“我要一个反转副本” → 直接写
.toReversed()
兼容性与降级方案
目前(2026年)主流浏览器(Chrome 115+、Firefox 117+、Safari 17.4+)已原生支持,但旧环境(如 IE、老版 Edge 或某些 Node.js 版本)仍需处理。
立即学习“Java免费学习笔记(深入)”;
- 检测并补丁:
if (!Array.prototype.toReversed) { Array.prototype.toReversed = function() { return this.slice().reverse(); }; } - 构建工具(如 Babel)配合
@babel/preset-env可自动按目标环境注入 polyfill - 服务端 Node.js 若低于 v20.6,建议显式判断或使用兼容写法
与嵌套结构配合时的注意事项
toReversed() 和 reverse() 一样,只反转第一层元素顺序,不递归处理内部对象或子数组。
- 对
[[1,2], [3,4], [5,6]]调用toReversed()→ 得到[[5,6], [3,4], [1,2]](子数组本身未翻转) - 如需深度反转,仍需组合操作:
arr.toReversed().map(sub => sub.toReversed?.() || sub.reverse()) - 注意:子数组若也想安全反转,需确认其环境是否支持
toReversed,否则回退用slice().reverse()

















