fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[ECMAScript] 第1740天 请说说ES2023有哪些新特性?

Open haizhilin2013 opened this issue 1 year ago • 1 comments

第1740天 请说说ES2023有哪些新特性?

3+1官网

我也要出题

haizhilin2013 avatar Jan 19 '24 20:01 haizhilin2013

ES2023 (ECMAScript 2023) 引入了一些新特性,旨在增强JavaScript语言的功能和可用性。这些特性包括数组和对象的扩展、新的语法改进以及对现有功能的增强。以下是ES2023的一些主要新特性:

1. Array.prototype.toSorted

Array.prototype.toSorted 方法返回一个新的数组,该数组是按排序后的顺序排列的,而原数组保持不变。这种方法与 Array.prototype.sort 类似,但不会修改原数组。

const arr = [3, 1, 4, 1, 5, 9];
const sortedArr = arr.toSorted((a, b) => a - b);
console.log(sortedArr);  // 输出: [1, 1, 3, 4, 5, 9]
console.log(arr);  // 输出: [3, 1, 4, 1, 5, 9]

2. Array.prototype.toReversed

Array.prototype.toReversed 方法返回一个新的数组,该数组是按逆序排列的,而原数组保持不变。

const arr = [1, 2, 3];
const reversedArr = arr.toReversed();
console.log(reversedArr);  // 输出: [3, 2, 1]
console.log(arr);  // 输出: [1, 2, 3]

3. Array.prototype.toSpliced

Array.prototype.toSpliced 方法返回一个新的数组,该数组是在指定位置插入、删除或替换元素后的数组,而原数组保持不变。

const arr = [1, 2, 3, 4, 5];
const splicedArr = arr.toSpliced(1, 2, 10, 11);
console.log(splicedArr);  // 输出: [1, 10, 11, 4, 5]
console.log(arr);  // 输出: [1, 2, 3, 4, 5]

4. Array.prototype.with

Array.prototype.with 方法返回一个新的数组,该数组是将指定位置的元素替换后的结果,而原数组保持不变。

const arr = [1, 2, 3];
const withArr = arr.with(1, 10);
console.log(withArr);  // 输出: [1, 10, 3]
console.log(arr);  // 输出: [1, 2, 3]

5. Object.prototype.hasOwn

Object.prototype.hasOwn 方法是一个新的方法,用于判断对象自身是否具有指定的属性。它与 Object.prototype.hasOwnProperty 类似,但更加简洁。

const obj = { a: 1, b: 2 };
console.log(obj.hasOwn('a'));  // 输出: true
console.log(obj.hasOwn('c'));  // 输出: false

6. Symbols作为WeakMap和WeakSet的键

在ES2023中,WeakMapWeakSet 支持使用 Symbol 作为键。这增强了这些数据结构的灵活性和功能性。

const wm = new WeakMap();
const ws = new WeakSet();

const sym = Symbol('key');
wm.set(sym, 'value');
ws.add(sym);

console.log(wm.get(sym));  // 输出: 'value'
console.log(ws.has(sym));  // 输出: true

7. ArrayTypedArrayfindLastfindLastIndex 方法

这两个方法允许从数组末尾开始查找元素。

const arr = [1, 2, 3, 4, 5];

const found = arr.findLast(x => x % 2 === 1);
console.log(found);  // 输出: 5

const foundIndex = arr.findLastIndex(x => x % 2 === 1);
console.log(foundIndex);  // 输出: 4

8. 新的 ArrayTypedArray 方法

这些新方法扩展了数组和类型数组的功能,包括:

  • toReversed()
  • toSorted()
  • toSpliced()
  • with()

结论

ES2023 引入的这些新特性增强了JavaScript的功能,使得处理数组和对象更加简洁和高效。这些改进不仅提高了代码的可读性和可维护性,还提供了更多的工具来解决常见的编程问题。

llccing avatar Jun 26 '24 06:06 llccing