ECMA 2023(ES14) 新特性

ecma,es14 · 浏览次数 : 0

小编点评

**ECMAScript 2023 新版** **主要内容** * **ECMAScript 2023 于 2023 年 6 月 27 日获得 ECMA International 的批准。** **新功能** * **Array.prototype.toReversed()、TypedArray.prototype.toReversed() 和 ArrayArray.prototype.toReversed()** 用于对数组进行逆序操作。 * **Symbol 作为 WeakMap 键** 支持使用唯一的 Symbol 作为键。 * **扩展 WeakMap API** 允许使用唯一的 Symbol 作为键。 * **额外方法**在 Array 和 TypedArrays 中提供对元素的更改。 * **`toReversed()`、`toSorted()` 和 `with()` 方法**保持目标数组不变,并返回执行更改的副本。 **其他改进** * **Hashbang 剥离** 支持使用 Shebangs/Hashbang 的 CLI JS 主机中的实际用法。 * **Symbol 作为 WeakMap 键** 允许使用符号作为键。 * **复制方法更改数组内容** 支持通过返回包含更改的新副本来启用对数组的更改。 * **`with()` 方法** 支持在数组元素中添加和删除元素。

正文

ECMAScript 2023 主要包含内容

ECMAScript 2023 于 2023 年 6 月 27 日获得 ECMA International 的批准。

ECMAScript 是标准化的 JavaScript 语言,于 1997 年发布了第一版,现已发展成为世界上使用最广泛的通用编程语言之一。

本 Ecma 标准定义了 ECMAScript 2023 Language,是 ECMAScript 语言规范的第 14 版。

从后向前遍历数组

它们的用法和find()findIndex()类似,唯一不同的是它们是 从后向前遍历数组,这两个方法适用于数组类数组

  • findLast() 会返回第一个查找到的元素,如果没有找到,就会返回 undefined
  • findLastIndex() 会返回第一个查找到的元素的索引。如果没有找到,就会返回 -1;

示例:

const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];

array.find((n) => n.value % 2 === 1); // { value: 1 }
array.findIndex((n) => n.value % 2 === 1); // 0

// ======== proposal 之前 ===========

// find
[...array].reverse().find((n) => n.value % 2 === 1); // { value: 3 }

// findIndex
array.length - 1 - [...array].reverse().findIndex((n) => n.value % 2 === 1); // 2
array.length - 1 - [...array].reverse().findIndex((n) => n.value === 42); // should be -1, but 4

// ======== proposal 之后 ===========
// find
array.findLast((n) => n.value % 2 === 1); // { value: 3 }

// findIndex
array.findLastIndex((n) => n.value % 2 === 1); // 2
array.findLastIndex((n) => n.value === 42); // -1

Hashbang

此提案是为了匹配某些允许 Shebangs/Hashbang 的 CLI JS 主机中的实际用法。
目前,此类主机会剥离 hashbang,以便在传递给 JS 引擎之前生成有效的 JS 源文本。这会将剥离转移到发动机上,它确实统一并标准化了剥离的方式。

示例:

#!/usr/bin/env node
// 在脚本目标中
"use strict";
console.log(1);
#!/usr/bin/env node
// 在模块目标中
export {};
console.log(1);

使用 Symbol 作为 WeakMap

目前,WeakMap 仅允许使用对象作为键,这是 WeakMap 的一个限制。新功能扩展了 WeakMap API,允许使用唯一的 Symbol 作为键

示例:

const weak = new WeakMap();

// 使用符号使它成为一个更具意义的 key
const key = Symbol("my ref");
const someObject = {
    /* data data data */
};

weak.set(key, someObject);

使用复制的方法更改数组内容

该提案在  Array.prototype  和  TypedArray.prototype  上提供了额外的方法,通过返回包含更改的新副本来启用对数组的更改。

该提案向  Array.prototype  引入了以下函数属性:

  • Array.prototype.toReversed() -> Array
  • Array.prototype.toSorted(compareFn) -> Array
  • Array.prototype.toSpliced(start, deleteCount, ...items) -> Array
  • Array.prototype.with(index, value) -> Array

所有这些方法都保持目标数组不变,并返回执行更改的副本。

toReversed 、 toSorted  和  with  也将被添加到 TypedArrays 中:

  • TypedArray.prototype.toReversed() -> TypedArray
  • TypedArray.prototype.toSorted(compareFn) -> TypedArray
  • TypedArray.prototype.with(index, value) -> TypedArray

示例:

const sequence = [1, 2, 3];
sequence.toReversed(); // => [3, 2, 1]
sequence; // => [1, 2, 3]

const outOfOrder = new Uint8Array([3, 1, 2]);
outOfOrder.toSorted(); // => Uint8Array [1, 2, 3]
outOfOrder; // => Uint8Array [3, 1, 2]

const correctionNeeded = [1, 1, 3];
correctionNeeded.with(1, 2); // => [1, 2, 3]
correctionNeeded; // => [1, 1, 3]

参考内容

与ECMA 2023(ES14) 新特性相似的内容:

ECMA 2023(ES14) 新特性

ECMAScript 2023 主要包含内容 ECMAScript 2023 于 2023 年 6 月 27 日获得 ECMA International 的批准。 ECMAScript 是标准化的 JavaScript 语言,于 1997 年发布了第一版,现已发展成为世界上使用最广泛的通用编程语言

你不知道的 ES2023

6 月 27 日 ECMA 大会批准了 ECMAScript 2023 (es14)规范,意味着新的一些语法将正式成为标准。下面来看看 ECMAScript 2023 有哪些值得我们关注的新特性。

ECMA标准ECMAScript(JavaScript的一个标准)和C#

2024 年 6 月 26 日,第 127 届 ECMA 大会正式批准了 ECMAScript 2024 语言规范,这意味着它现在正式成为最新 ECMAScript 标准。ECMAScript是ECMA标准中最著名的编程语言标准,它定义了JavaScript语言的核心特性。C#语言则是由ECMA国际

第一百一十六篇: JavaScript理解对象

好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.关于对象 ECMA-262将对象定义为一组属性的无序集合。严格来说,这意味着对象就是一组没有特定顺序的值。 对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值。正因为如此(以及其他还未讨论的原因),可以把 EC

第一百一十八篇: JavaScript 原型链式继承

好家伙,好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.原型链 原型链是JS实现"继承"的方案之一 ECMA-262把原型链定义为ECMAScript的主要继承方式。其基本思想就是通过原型继承多个引用类型的属性和方法。 重温一下构造函数、原型和实例的关系:每个构造函数