首页 > 其他分享 >ECMA 2023(ES14) 新特性

ECMA 2023(ES14) 新特性

时间:2024-05-22 14:43:56浏览次数:32  
标签:const value 2023 TypedArray array prototype Array ECMA ES14

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]

参考内容

标签:const,value,2023,TypedArray,array,prototype,Array,ECMA,ES14
From: https://www.cnblogs.com/guojikun/p/18206186

相关文章

  • [CSP-S 2023] 种树
      #include<bits/stdc++.h>#definelllonglong#definepbpush_back#definemxn100003#definerep(i,a,b)for(inti=a;i<=b;++i)#definerept(i,a,b)for(inti=a;i<b;++i)usingnamespacestd;intn,p[mxn],d[mxn],ct[mxn];lla[mxn],b[mxn],c[m......
  • CMU_15445数据库课程2023Fall
    这一个Project是让我们了解C++的语法以及改数据库项目的整体框架,基本的锁的使用,怎么Debug.一些零碎的知识碎片我放到最后了,以前是写C的,C++的很多语法还不是很熟悉,很多新的语法更不知道该怎么用.这次作业完成也是受益良多.Copy_on_Write字典树首先必须明确一个概念,......
  • SAP S4HANA 2023 PCE系统上ME23N界面里的打印预览功能不能使用?
    SAPS4HANA2023PCE系统上ME23N界面里的打印预览功能不能使用?  在老版本的SAPECC系统上,在采购订单的显示界面,我们是可以点击‘打印预览’按钮去看采购订单的打印效果的。这是一个有经验的MM模块顾问熟知的。 但是笔者的这个认知在SAPS4HANA2023PCE系统上被颠覆了!笔......
  • SQL优化-20231016
    数据结构数据库的表和索引缺一不可表特点:无序,插入速度快,查找速度慢索引(B+Tree)特点:有序,插入速度慢,查找速度快查找的效率比较,如果按照读取的数据块来计算?测试数据TABLE_OWNERTABLE_NAMEINDEX_NAMECOLUMNS......
  • “复兴杯”2023第四届大学生网络安全精英赛排位赛 Writeup
    时间跟全国信安初赛重了(),不过也是第一次在CTFAK了(个人信息个人排名:15解题过程1观察代码,使用科学技术法进行绕过,2.023e3也就是2.023*10^3=2023,弱比较时会化为2023,但是运算时后并不绝对等于2024。输入得到flag。2打开网站可以看到电脑账号是ly,使用过滤器得到包含ly的包,如......
  • 国内版Unity 2023编辑器无法切换到DX12模式的解决方法
    在“安装目录\Editor”里(也就是Unity安装的根目录)建立一个D3D12文件夹。去“安装目录\Editor\Data\PlaybackEngines\windowsstandalonesupport\External\AgilitySDK\x64”内,将两个文件都复制到D3D12文件夹下。根本原因是在整个2023TechStream里,国内版的Unity(后缀是f1c1的版本)......
  • P9691 [GDCPC2023] Base Station Construction
    原题链接题解注意数据范围1.我们不知道要在哪些地方建站,所以考虑都遍历一遍2.如果一个地方\(i\)要建站,那么在它前面且离它最近的一个站,一定建在所有右端点大于\(i\)的区间中,左端点最大区间里所以我们令\(dp[i]\)表示为在\(i\)建立一个站,且和\([1,i]\)有交集的区间......
  • [lnsyoj281/luoguP2023/AHOI2009]维护序列
    题意原题链接给定序列\(a\),要求维护区间加,区间乘,区间查询三种操作sol显然线段树,事实上,这是一道板子题(luoguP3373),但由于蒟蒻实在是太蒻了,并没有打过这道题。区间加如果我们将区间里的每一个元素都插入线段树做一次修改操作,那么一次修改操作的时间复杂度为\(O(n\logn)\),此时......
  • 鲜花 #1 2023 年总结
    \(2023\)的最后一天,该总结一下这一年了。对我来说,\(csp2023\)成为了一种最独特的回忆。虽然最终的成绩并不理想(见csp2023游记),但是,这也是一种回忆罢了。我们回首\(2023\),展望\(2024\)。\(2023\),我第一次参加了\(csp\),退役,回归文化课,参加学校缤纷节,第一次住校,第一次\(\do......
  • csp2023 游记
    2023.10.20(Day0)S1拿了\(68.5\)分,顺利晋级。但是J1只拿了\(60.5\),没了。S2就在自己的学校(而且甚至是我上信息技术课的教室),所以试机了和没试机没有任何区别qwq。在luogu上面打了一下a+b,回顾了一下编译就走了。2023.10.21(Day1)正序开题,发现T1好像是\(5\)个fo......