ES2023中有什么新功能? ð
#javascript #网络开发人员 #编程 #news

去年,我写了一篇有关ES2022今年的新功能的文章

ES2023的功能

1.从最后一个查找数组

此功能将使我们能够根据条件从数组的最后一个到第一个元素。

const array = [{a: 1, b: 1}, {a: 2, b: 2}, {a: 3, b: 3}, {a: 4, b: 4}]

console.log(array.findLast(n => n)); //result -> {a: 4,b: 4 }

console.log(array.findLast(n => n.a * 5 === 20)); // result -> {a:4,b:4} as the condition is true so it returns the last element.

console.log(array.findLast(n => n.a * 5 === 21)); //result -> undefined as the condition is false so return undefined instead of {a:4,b:4}.

console.log(array.findLastIndex(n => n.a * 5 === 21)); // result -> -1 as the condition is not justified for returning the last element.

console.log(array.findLastIndex(n => n.a * 5 === 20)); // result -> 3 which is the index of the last element as the condition is true.

2. Hashbang Grammer

此功能将使我们能够在某些CLI中使用Hashbang / Shebang。
Shebang由#!代表,是脚本开头的一条特殊行,告诉操作系统在执行脚本时要使用的是要使用的操作系统

#!/usr/bin/env node
// in the Script Goal
'use strict';
console.log(2*3);

#!/usr/bin/env node
// in the Module Goal
export {};
console.log(2*2);

#!/usr/bin/env node此行将直接调用node.js源文件,作为其自己的可执行文件。

我们不需要此行(#!/usr/bin/env node)即可通过节点解释器明确调用文件,例如,node ./file

3.符号作为弱图键

这允许使用唯一的符号作为键。当前,弱映射仅限于仅允许对象作为密钥。对象被用作弱图的键,因为它们具有相同的身份方面。

符号是Ecmascript中唯一的原始类型,允许使用符号作为键而不是使用弱图创建新对象的唯一值。


const weak = new WeakMap();

const key = Symbol('my ref');
const someObject = { a:1 };

weak.set(key, someObject);
console.log(weak.get(key));

更多与ShadowRealmsRecord & Tuples相关的用例使用符号作为feekmaps

4.通过复制更改数组

这提供了Array.prototype上的其他方法,可以通过更改返回其新副本而不是更新原始数组来更改数组。

新的Array.prototype引入功能是:

  1. Array.prototype.toReversed()
  2. Array.prototype.toSorted(compareFn)
  3. Array.prototype.toSpliced(start, deleteCount, ...items)
  4. Array.prototype.with(index, value)
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* toReversed */

const reversed = numbers.toReversed();
console.log("reversed", reversed); // "reversed", [9, 8, 7, 6, 5, 4, 3, 2, 1]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* toSorted  */
const sortedArr = numbers.toSorted();
console.log("sorted", sortedArr); // "sorted", [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* with */
const replaceWith = numbers.with(1, 100);
console.log("with", replaceWith); // "with", [1, 100, 3, 4, 5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

/* toSpliced */
const splicedArr = numbers.toSpliced(0, 4);
console.log("toSpliced", splicedArr); // "toSpliced", [5, 6, 7, 8, 9]
console.log("original", numbers); // "original", [1, 2, 3, 4, 5, 6, 7, 8, 9]

这些是ES2023的一些很棒的功能,我真的很期待在我的日常编码中亲自尝试。

愉快的编码! ð©ð»