ES2023 新特性解析_数组与对象的现代化操作指南
1. ES2023 简介
ECMAScript 是 JavaScript 的标准化版本,ES2023(即 ECMAScript 2023)是该系列标准的最新一版,于 2023 年正式发布。它延续了近年来对开发者体验和代码可维护性的优化趋势,引入了一系列实用的新特性。
1.1 什么是 ES2023?
ES2023 包含多个新增功能,主要集中在数组、对象以及异步编程方面,强调不可变性、函数式风格,并提升代码的安全性和表达力。
1.2 ECMAScript 版本演进简述
版本 | 发布年份 | 核心特性 |
---|---|---|
ES5 | 2009 | JSON 支持、严格模式等 |
ES6 (ES2015) | 2015 | 类、模块、箭头函数、解构等 |
ES2016~2022 | 每年更新 | .includes() 、Promise.finally() 、?. 运算符等 |
ES2023 | 2023 | Array.prototype.with , toSorted , Object.hasOwn , 异步资源清理等 |
2. Array.prototype.with
方法详解
2.1 语法与基本用法
const arr = [1, 2, 3, 4];
const newArr = arr.with(1, 10); // 替换索引 1 处的值为 10
console.log(newArr); // [1, 10, 3, 4]
console.log(arr); // [1, 2, 3, 4] 原数组未改变
- 负数索引表示从末尾倒数:
const nums = [10, 20, 30]; console.log(nums.with(-1, 99)); // [10, 20, 99]
2.2 不可变性(Immutability)优势
with
方法不会修改原数组,而是返回一个新数组副本,非常适合在 React、Redux 等状态管理中使用,避免副作用。
const [state, setState] = useState([1, 2, 3]);
setState(prev => prev.with(0, 100));
2.3 与 splice
的对比
特性 | with(index, value) | splice(start, deleteCount, item) |
---|---|---|
是否修改原数组 | ❌ 否 | ✅ 是 |
返回值 | 新数组 | 被删除的元素数组 |
可读性 | 更直观 | 参数复杂 |
2.4 使用场景与示例代码
适用