翼度科技»论坛 编程开发 JavaScript 查看内容

ECMA 2023(ES14) 新特性

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
ECMAScript 2023 主要包含内容

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

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

本 Ecma 标准定义了 ECMAScript 2023 Language,是 ECMAScript 语言规范的第 14 版。
从后向前遍历数组

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

  • findLast() 会返回第一个查找到的元素,如果没有找到,就会返回 undefined;
  • findLastIndex() 会返回第一个查找到的元素的索引。如果没有找到,就会返回 -1;
示例:
  1. const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];
  2. array.find((n) => n.value % 2 === 1); // { value: 1 }
  3. array.findIndex((n) => n.value % 2 === 1); // 0
  4. // ======== proposal 之前 ===========
  5. // find
  6. [...array].reverse().find((n) => n.value % 2 === 1); // { value: 3 }
  7. // findIndex
  8. array.length - 1 - [...array].reverse().findIndex((n) => n.value % 2 === 1); // 2
  9. array.length - 1 - [...array].reverse().findIndex((n) => n.value === 42); // should be -1, but 4
  10. // ======== proposal 之后 ===========
  11. // find
  12. array.findLast((n) => n.value % 2 === 1); // { value: 3 }
  13. // findIndex
  14. array.findLastIndex((n) => n.value % 2 === 1); // 2
  15. array.findLastIndex((n) => n.value === 42); // -1
复制代码
Hashbang

此提案是为了匹配某些允许 Shebangs/Hashbang 的 CLI JS 主机中的实际用法。
目前,此类主机会剥离 hashbang,以便在传递给 JS 引擎之前生成有效的 JS 源文本。这会将剥离转移到发动机上,它确实统一并标准化了剥离的方式。
示例:
  1. #!/usr/bin/env node
  2. // 在脚本目标中
  3. "use strict";
  4. console.log(1);
复制代码
  1. #!/usr/bin/env node
  2. // 在模块目标中
  3. export {};
  4. console.log(1);
复制代码
使用 Symbol 作为 WeakMap 键

目前,WeakMap 仅允许使用对象作为键,这是 WeakMap 的一个限制。新功能扩展了 WeakMap API,允许使用唯一的 Symbol 作为键
示例:
  1. const weak = new WeakMap();
  2. // 使用符号使它成为一个更具意义的 key
  3. const key = Symbol("my ref");
  4. const someObject = {
  5.     /* data data data */
  6. };
  7. 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
示例:
  1. const sequence = [1, 2, 3];
  2. sequence.toReversed(); // => [3, 2, 1]
  3. sequence; // => [1, 2, 3]
  4. const outOfOrder = new Uint8Array([3, 1, 2]);
  5. outOfOrder.toSorted(); // => Uint8Array [1, 2, 3]
  6. outOfOrder; // => Uint8Array [3, 1, 2]
  7. const correctionNeeded = [1, 1, 3];
  8. correctionNeeded.with(1, 2); // => [1, 2, 3]
  9. correctionNeeded; // => [1, 1, 3]
复制代码
参考内容


来源:https://www.cnblogs.com/guojikun/p/18206186
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具