ECMA 2023(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() -> ArrayArray.prototype.toSorted(compareFn) -> ArrayArray.prototype.toSpliced(start, deleteCount, ...items) -> ArrayArray.prototype.with(index, value) -> Array
所有这些方法都保持目标数组不变,并返回执行更改的副本。
toReversed 、 toSorted 和 with 也将被添加到 TypedArrays 中:
TypedArray.prototype.toReversed() -> TypedArrayTypedArray.prototype.toSorted(compareFn) -> TypedArrayTypedArray.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 批准新标准
ECMA 2023(ES14) 新特性的更多相关文章
- ECMA 2022 (es13) 新特性
本文主要整理了截至到 2021年10月12日 为止的且处于 Stage 3->Stage 4 阶段的ECMA提案. 主要包括: Class Fields RegExp Match Indices ...
- ECMA Script 6新特性之解构赋值
1.基本概念用法 1.1解构赋值:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值. var a = 1; var b = 2; var c = 3; /*上述赋值语句用解构赋值为*/ v ...
- ECMA script 6的新特性
简单介绍下ES6的新特性: (1)箭头操作符 :简化了函数的书写 (2)类的支持:引入了class关键字,对象的创建,继承更加直观,父类方法的调用,实例化,构造函数等概念更加形象化. (3)增强的对象 ...
- atitit.js 各版本 and 新特性跟浏览器支持报告
atitit.js 各版本 and 新特性跟浏览器支持报告 一个完整的JavaScript实现是由以下3个不同部分组成的 •核心(ECMAScript)--JavaScript的核心ECMAScrip ...
- ECMAScript6新特性之let、const
第一次在博客园写博客,想把自己每一天学习到的知识点记录下来,心里有点紧张(PS:不知道自己能不能写好......嘿嘿).言归正传,咱们先来说说"ECMAScript"这到底是啥玩意 ...
- ES2018新特性(译文)
原文链接:css-tricks.com 第9版ECMAScript标准于2018年6月发布,正式名称为ECMAScript 2018(简称ES2018).从ES2016开始,ECMAScript规范的 ...
- 【整理】Java 11新特性总结
闲语 2018年9月25日,Java 11正式发布,与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11.Oracle直到2023年9月都会为 ...
- 【repost】H5的新特性及部分API详解
h5新特性总览 移除的元素 纯表现的元素: basefont.big.center.font等 对可用性产生负面影响的元素: frame.frameset.noframes 新增的API 语义: 能够 ...
- es2017新特性
2017年6月底es2017不期而至; 截止目前es8是ecmascript规范的第九个版本:自es2015开始ECMA协会将每年发布一个版本并将年号作为版本号:算了 直接看下es2017的新特性: ...
- ECMAScript 5和ECMAScript6的新特性以及浏览器支持情况
ECMAScript简介: 它是一种由Ecma国际(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范,javascript在它基础上经行了自己的封装.但通常来说,术语ECMAScript和java ...
随机推荐
- Seaborn线性关系数据可视化
regplot() 绘制两个变量的线性拟合图. sns.regplot( x, y, data=None, x_estimator=None, x_bins=None, x_ci='ci', scat ...
- 获取 BSTR 字符串长度
BSTR a = L"hello world"; int len = SysStringByteLen(a);
- django项目部署到centos
服务器是使用的阿里云的centos 7.6 项目使用的是 Python3.9.5 + Django 3.2.4 目标:将django项目部署到centos上,centos + Python + dja ...
- BiLSTM算法(一)
原理分析: BiLSTM(双向长短期记忆网络) 是一种循环神经网络(RNN)的变体,它在自然语言处理任务中非常有效,其中包括给定一个长句子预测下一个单词. 这种效果的主要原因包括以下几点: 长短期记忆 ...
- 有奖活动 | 以代码之名,写出对Ta的爱
七夕情人节到了,为了Ta, 你打算用什么方式表达爱? 是包包.鲜花.美酒.巧克力, 还是一封充满爱意的短信? 在HarmonyOS,有一群精致又机智的开发者们,他们#以代码之名,表达爱# 比起鲜花 ...
- Kubernetes Pod配置:从基础到高级实战技巧
本文深入探讨了Kubernetes Pod配置的实战技巧和常见易错点. 关注[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团 ...
- spring boot @propertySource @importResource @Bean [六]
@propertySource 指定property的配置源. 创建一个person.property: 然后修改person注解; 在运行test之后,结果为: @importResource 这个 ...
- 01矩阵-【BFS】
01矩阵 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离.两个相邻元素间的距离为 1 ,方格斜方向不计算距离. 示例 1: 输入: [0 0 0 0 1 0 0 0 0] 输出: ...
- 快速上手Linux核心命令
Linux 的重要性不用我多说了吧,大多数互联网公司,服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统. 只有熟练掌握Linux核心命令,在使用起来我们才会得心应 ...
- vue使用 elementUI中el-upload的遇到的问题总结
使用场景,使用el-upload上传文件,选择文件后不立即上传到服务器上,点击提交按钮时与其他form表单数据一起提交,类似的需求,相信有很多小伙伴遇到,可能也会遇到跟我一起的问题,在这里记录一下 & ...