久趣下载站

当前位置: 首页 » 游戏攻略 » ECMAScript 2023 新特性介绍

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 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]

参考内容:

  • tc39/proposal-array-find-from-last 提案。
  • tc39/proposal-hashbang 提案
  • tc39/proposal-symbols-as-weakmap-keys 提案
  • tc39/proposal-change-array-by-copy 提案
  • Ecma International 批准新标准
猜你喜欢
本类排行