ECMAScript 2023 的最终版本预计将于今年 6 月底发布。会议基本已经确定 了 ECMAScript 2023 的新功能列表,预计不会再有任何重大的编辑更改。

着该提案已被 ECMAScript 编辑签署同意意见,成为了事实上的标准特性。

Array find from last

提案ArrayTypedArray原型上增加了findLast()findLastIndex() 方法。它们与find()findIndex()做同样的事情,但顺序相反。这两个方法都很方便,可跳过创建临时的重复、突变和混乱的索引减法。

const isEven = (number) => number % 2 === 0;
const numbers = [1, 2, 3, 4]; // from first to the last lookup
console.log(numbers.find(isEven));
// 2
console.log(numbers.findIndex(isEven));
// 1 // from last to the first lookup
console.log(numbers.findLast(isEven));
// 4
console.log(numbers.findLastIndex(isEven));
// 3

Hashbang Grammar

Hashbang,也称为 shebang,是可执行脚本开头的字符序列,用于定义要运行的程序的解释器。当 Unix 内核的程序加载器执行 JavaScript 程序时,主机会剥离 hashbang 以生成有效源,然后再将其传递给引擎。Hashbang Grammar 提案标准化了它的完成方式。

#!/usr/bin/env node

console.log('hi ');

Symbols as WeakMap keys

在 JavaScript 中,Objects 和 Symbols 被保证是唯一并且不能被重新创建的,这使得它们都是 WeakMapkeys 的理想候选者。以前的版本或规范只允许以这种方式使用 Objects ,但新的 Symbols as WeakMap keys 提案则提出将 non-registered Symbols 添加到允许的键列表中。

const weak = new WeakMap();
const key = Symbol("ref");
weak.set(key, "ECMAScript 2023"); console.log(weak.get(key));
// ECMAScript 2023

Change Array by Copy

Array.prototype 上的 reverse()sort()splice() 方法就地改变数组。Change Array by Copy提案添加了那些返回新 copy 方法的等价物 —— toReversed()toSorted()toSpliced()。该提案还添加了一个 with() 方法,该方法返回一个新的数组,其中给定索引处的元素被替换为给定值,以避免使用 bracket notation 的就地突变。

const original = [1, 2, 3, 4];
const reversed = original.toReversed(); console.log(original);
// [ 1, 2, 3, 4 ] console.log(reversed);
// [ 4, 3, 2, 1 ]
const original = [1, 3, 2, 4];
const sorted = original.toSorted(); console.log(original);
// [ 1, 3, 2, 4 ] console.log(sorted);
// [ 1, 2, 3, 4 ]
const original = [1, 4];
const spliced = original.toSpliced(1, 0, 2, 3); console.log(original);
// [ 1, 4 ] console.log(spliced);
// [ 1, 2, 3, 4 ]
const original = [1, 2, 2, 4];
const withThree = original.with(2, 3); console.log(original);
// [ 1, 2, 2, 4 ] console.log(withThree);
// [ 1, 2, 3, 4 ]

ECMAScript 2023 新特性预览的更多相关文章

  1. C# 9.0 新特性预览 - 类型推导的 new

    C# 9.0 新特性预览 - 类型推导的 new 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大 ...

  2. C# 9.0 新特性预览 - 空参数校验

    C# 9.0 新特性预览 - 空参数校验 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它 ...

  3. C# 9.0 新特性预览 - 顶级语句

    C# 9.0 新特性预览 - 顶级语句 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它们 ...

  4. C# 9.0 新特性预览 - init-only 属性

    C# 9.0 新特性预览 - init-only 属性 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章 ...

  5. Windows Phone 8.1SDK新特性预览

    前言    Windows Phone 8.1的预览版将在近期推送,WP 8.1的SDK也已经进入到RC阶段,可以从这里安装.本次更新的SDK被直接集成到了VS2013Update2里面,不再是单独的 ...

  6. avalon1.3的新特性预览

    avalon1.2的性能优化风暴很快就告一段落,入职也快一个月了,许多乱七八糟的事也少了下来,估计未来一个月会有许多好东呈现给大家. 首先是一个性能检测工具.由于MVVM是将原本由人脑干的事,转到各种 ...

  7. Office 2016 正式发布——新特性预览

    今天微软又发生了一件大事!Windows Office 2016正式发布,这标志着Windows Office 又达到了一个新的里程碑! 全新的Office 发布为Office 365 用户带来了新的 ...

  8. CSS3_新特性预览

    一.强大的CSS选择器 以前我们通常用class. ID 或 tagname 来选择HTML元素,CSS3的选择器强大的难以置信.  它们可以减少在标签中的class和ID的数量更方便的维护样式表.更 ...

  9. Vue.js 3.0 新特性预览

    总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更易于维护 更多的原生支持 更易于开发使用 完整的PPT:docs.google.com/presentatio… Evan 和 Vue 团 ...

  10. ECMAScript 6新特性简介

    目录 简介 ECMAScript和JavaScript的关系 let和const 解构赋值 数组的扩展 函数的扩展 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言 ...

随机推荐

  1. 如何在公司项目中使用 WebSocket— 入门实战指南

    本文从 WebSocket 基础概念出发,介绍在实际开发中从本地联调到部署上线的流程以及注意事项,让 WebSocket 小白以最小成本应用到项目中. 一.WebSocket 基础 1.什么是 Web ...

  2. SpringCloud学习 系列十、服务熔断与降级(2-方法级别服务降级)

    系列导航 SpringCloud学习 系列一. 前言-为什么要学习微服务 SpringCloud学习 系列二. 简介 SpringCloud学习 系列三. 创建一个没有使用springCloud的服务 ...

  3. vue 引入echars 亲测版

    网上找了很多例子,其中有修改main.js的配置的,反正我没搞成功,最后实验成功的步骤如下 1.首先创建一个Vue CLI 的工程 . 注:具体步骤查看以前的博客 https://www.cnblog ...

  4. KSP(坎巴拉)萌新感悟

    1.为什么降落月球等无大气星球时减速为亚轨道之后便不再减速,等到快坠落的时候在满节流阀极限减速最省燃料? 因为我们的dv是确定的,燃料能给我们带来一定量的冲量,却因此可以带来不一定量的动量,显然速度越 ...

  5. docker 安装 nacos

    转载请注明出处: https://www.jianshu.com/p/54f6da71ac48

  6. Cortex-M3内核介绍

    目录 Cortex Vendor - ARM介绍 ARM主要提供指令集,需要授权 ARM使用的RSIC结构,功耗比较低 Cortex M3整体架构 核心是Processor Core - 包含寄存器和 ...

  7. Python Code_02

    author : 写bug的盼盼 development time : 2021/8/27 19:59 变量定义 name = '阿哈' print(name) print('标识',id(name) ...

  8. [转帖]从Linux源码看TIME_WAIT状态的持续时间

    https://zhuanlan.zhihu.com/p/286537295 从Linux源码看TIME_WAIT状态的持续时间 前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持 ...

  9. [转帖]TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践

    返回全部 边城元元案例实践2022-08-02 复杂业务查询对于传统的关系型数据库来说是一种考验,而通过 TiKV 行存与 TiFlash 的列存结合使用就能很好地应对.本文根据 TUG 用户边城元元 ...

  10. [转帖]s3fs

    https://github.com/s3fs-fuse/s3fs-fuse s3fs allows Linux, macOS, and FreeBSD to mount an S3 bucket v ...