ES14新特性揭秘,对前端开发有哪些影响?

【前端ES】ECMAScript 2023 (ES14) 引入了多个新特性,简单介绍几个不为人知但却好用的方法 返回一个新的 Promise 对象和对应的 resolve/reject 函数。提供了一个机制来注册回调函数,当垃圾回收器清除注册表中的条目时调用。// 等价于 a = a && 5;提供了一种方法来格式化数字范围,并返回格式化的部分数组。提供了一种方法来格式化数字范围,并返回格式化的部分数组。允许根据索引修改数组中的单个元素,并返回新数组。返回一个新的已排序数组副本,不改变原数组。,但返回一个新的数组而不是原地操作。从数组中获取最后一个匹配元素的实例。类似,但返回匹配元素的索引。方法,但返回一个新数组。 阅读详情

ECMAScript 2023也就是ES14已经发布3个月了,还有好多小伙伴没有关注到ES14有哪些变化,本文将为大家梳理下ES14最新规范新增功能:对数组的新增功能,对shebang的支持,对弱引用集合的符号键的扩展。这个版本的都是一些细微的改进,我们一起看看有哪些变更

目录

  • Array.prototype.toSorted
  • Array.prototype.toReversed
  • Array.prototype.with
  • Array.prototype.findLast
  • Array.prototype.findLastIndex
  • Array.prototype.toSpliced
  • 正式的 shebang 支持
  • Symbol 作为 WeakMap 的键
  • 总结

Array.prototype.toSorted

toSorted() 与 Array.prototype.sort() 具有相同的签名,但它创建一个新的数组,而不是对原数组进行操作。


let arr = [5, 4, 2, 3, 1];
arr === arr.sort(); // true - [1, 2, 3, 4, 5]

arr === arr.toSorted(); // false - [1, 2, 3, 4, 5]

toSorted() 和 sort() 一样,接受一个可选参数作为比较函数。例如,我们可以使用 toSorted() 创建一个按降序排列的新数组

const numbers = [10, 5, 2, 7, 3, 9, 1, 6, 4];
const sortedNumbers = numbers.toSorted((a, b) => {
  return b - a;
});
console.log(sortedNumbers); // [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

需要注意的是,toSorted() 也可以应用于对象数组。这种情况下,需要提供一个使用对象上的数据的比较函数,因为对象没有自然的排序方式。

// 比较对象
const objects = [
  { name: "John", age: 30 },
  { name: "Jane", age: 25 },
  { name: "Bill", age: 40 },
  { name: "Mary", age: 20 }
];
const sortedObjects = objects.toSorted((a, b) => {
  return a.name.localeCompare(b.name);
});
console.log(sortedObjects);
// [{"name":"Bill","age":40},{"name":"Jane","age":25},{"name":"John","age":30},{"name":"Mary","age":20}]

Array.prototype.toReversed

与 toSorted() 和 sort() 一样,toReversed() 是 reverse() 的复制版本。

代码清单 4. toReversed()

["a", "b", "c", "d", "e"].toReversed(); // ['e', 'd', 'c', 'b', 'a']

Array.prototype.with

新的 with() 方法允许您基于索引修改单个元素,并返回一个新的数组。因此,如果您知道索引和新值,这个方法非常方便。需要注意的是with() 是 set() 的复制伴侣。


const arr4 = ["I", "am", "the", "Walrus"];

// 用 "Ape Man" 替换字符串 "Walrus"。
const newArr4 = arr4.with(3, "Ape Man");

console.log(newArr4);

Array.prototype.findLast

findLast() 方法允许您从数组中获取匹配元素的最后一个实例。如果找不到匹配元素,则返回 undefined。下面代码中提供了一个简单的示例,我们从数组中获取最后一个偶数。


const arr = [54, 34, 55, 75, 98, 77];

const lastEvenIndex = arr.findLast((element) => {
  return element % 2 === 0;
});

console.log(lastEvenIndex); // 98

findLast() 还支持传递一个 “thisArg” 来设置上下文。也就是说,第二个参数将告诉第一个参数函数 this 关键字将引用什么。从下面代码中看到这一点,我们使用一个自定义对象来找到可以被 5 整除的第一个元素。


const arr6 = [54, 34, 55, 75, 98, 77];
const myObject = { testCase: 5 };
const lastEvenIndex = arr5.findLast((element) => {
  return element % myObject.testCase === 0;
}, myObject);

console.log(lastEvenIndex); // 75

Array.prototype.findLastIndex

findLastIndex() 的工作方式与 findLast() 相同,只是它返回匹配元素的索引而不是元素本身。例如,下面例子展示如何找到最后一个可以被 6 整除的元素的索引。

代码清单 8. 使用 findLastIndex() 找到元素的索引

const arr = [54, 34, 55, 75, 98, 77];
arr.findLastIndex(x => x % 6 === 0); // 0

Array.prototype.toSpliced

上面新增的所有方法也适用于 TypedArray,但 toSpliced() 这个新的数组方法只存在于 Array 中。toSpliced() 方法是 splice() 的复制版本,splice()是js中数组操作常用的方法;

假设我们有一个颜色数组,需要在中间插入一些新的颜色(粉红色和青色)。这会创建一个新数组,而不是修改原始数组。


const arr = ["red", "orange", "yellow", "green", "blue", "purple"];
const newArr = arr.toSpliced(2, 1, "pink", "cyan");
console.log(newArr);
// ["red", "orange", "pink", "cyan", "green", "blue", "purple"]
console.log(newArr[3]);
// 'cyan'
console.log(arr[3]);
// 'green'

正式的 shebang 支持

Shebang 是旧式 Unix 术语,表示井号后跟一个感叹号:#!(其中 “bang” 是感叹号的俚语)。

#!/bin/bash

echo "Hello, world!"

您可以使用 ./hello.sh 直接运行上面代码。

您也可以在 JavaScript 中执行类似操作,如代码清单 11 所示。

#!/usr/bin/env node

console.log("Hello, world!");

上面例子告诉操作系统使用 node 程序来运行此脚本。只需键入 ./hello.js 即可运行它。如果没有 #!是无法运行的。

Shebang 支持是规范中已经实现并在多种情境下非正式采用的特性之一。

Symbol 作为 WeakMap 的键

ES14中的最后一个新功能是Symbol 可以作为 WeakMap 的键使用。在这之前,WeakMap仅允许对象作为键值,新特性更容易创建和共享key。

var map = new WeakMap(); // 创建一个弱映射
function useSymbol(symbol){
    doSomethingWith(symbol);
    var called = map.get(symbol) || 0

上面的例子允许从外部调用者调用计数器,并在不再有引用时释放映射条目。代码本身无法知道何时不再需要引用,如果使用普通的 Map,将会导致内存泄漏。这是因为即使在调用它的客户端不再需要引用时,代码仍然会保留对该引用的持有。在这种情况下使用 WeakMap,可以确保垃圾回收在不再存在对键符号的引用时删除映射条目。

总结

虽然 ES14 的规范刚发布不久,但是本文提到新增的数组api已经得到了主流浏览器支持。Chrome 110、Safari 16.3、Node.js 20 和 Deno1.31 都支持这四种新方法。感兴趣的小伙伴快去玩玩吧。

优快云技术博客标题Emoji使用指南:124个可用表情与SEO优化实践 在技术博客写作中,Unicode字符的兼容性与渲染一致性是影响前端显示效果的基础问题。Emoji作为Unicode字符集的一部分,其在不同平台和字体环境下的支持程度存在差异,这直接关系到内容的可读性与用户体验。从技术原理上看,平台渲染引擎、字体支持策略和编码传输流程共同决定了Emoji的最终显示效果,这体现了前端工程中兼容性处理的重要性。对于技术社区的内容创作者而言,合理使用Emoji不仅能提升标题的视觉吸引力,还能增强信息传达的效率,是优化内容呈现的实用技巧。本文基于对优快云平台的实证测试,筛选出124 阅读详情

相关推荐

MiniMax H3本地部署与ComfyUI集成实战:从环境配置到提示词优化

文本到视频生成是AI内容创作领域的关键技术,它基于扩散模型等深度学习原理,将自然语言描述转化为连贯的动态视觉序列。这项技术的核心价值在于大幅降低了视频制作的门槛,为短视频创作、概念可视化、教育内容生成等场景提供了高效工具。在实际工程实践中,成功部署和运行此类模型,如近期备受关注的MiniMax H3,需要精准处理环境配置、显存优化和提示词工程等环节。其中,解决“CUDA error: no kernel image is available”等版本兼容性问题,以及针对“8G显存”等有限资源进行参数调优,是确

weixin_33674976的博客 479

前后端通用的前端技术栈教程(Vue、Node、Webpack、ES等)

随着技术的发展,前后端现在几乎成开发人员的通用技能了,彼此熟悉下相互的工作,有利于项目的开发进度。 后端工程师虽然大部分工作都是跟服务器缓存数据库打交道,但有时也需要写一些前端代码。 前后端分离技术越来越热,作为后端掌握一些前端技术是很有必要的,就算开发中不直接写前段代码,了解前端知识能让我们跟前端小伙伴更愉快的交流。 本教程包含Vue、ES6、Element-UI、Node、Webpack、Axios、模块化等 软件版本vue-admin-template-master.zipvue-element-admin-master.zipVSCodeUserSetup-x64-1.39.2.exenode-v10.14.2-x64.msielement-ui.zip 通过老师的讲解能掌握前端技术栈在大型项目中是如何使用的,节省大家的摸索成本,带着大家熟悉常用的前端技术栈。

企业固定资产管理的SAP实战:FICO模块配置与折旧范围设置详解

本文深入解析了SAP FICO模块中固定资产会计配置的核心实践,重点阐述了折旧范围的设计哲学与配置逻辑。通过详解折旧表、折旧范围、资产分类及折旧码等关键配置步骤,指导企业如何搭建满足多会计准则(如CAS、IFRS)与税务要求的资产管理体系,实现资产购置、折旧计提与报废清理的自动化与精准化。

wdx01234567的博客 728

ES6(2015)~ES14(2023)语法新特性

ECMAScript 是由 Ecma 国际通过ECMA-262 标准化的脚本程序设计语言。平时经常编写的JavaScript,是ECMAScript 的一种实现,所以ES新特性其实指的就是JavaScript的新特性。​ES6 加入许多新的语法特性,使编程的实现更简单、高效​ES标准列表:​​ES兼容性:​1、一定要赋初始值。2、一般常量名使用大写。3、常量的值不能修改。4、const也遵循块级作用域。5、对于数组和对象的修改,不算做对常量的修改,不会报错。

qq_72626212的博客 2091

Altium Designer系列: 软件系统参数配置保存

【Altium Designer实践】 软件系统参数配置保存 作者 CodeAllen ,转载请注明出处 目录设置中文菜单高亮模式设置文件关联pcb设置布线设置保存配置文件(复用) 设置中文菜单 DXP->Preferences 高亮模式设置 文件关联 pcb设置 布线设置 保存配置文件(复用) ......

CodeAllen嵌入式 2019

【YOLOv11改进- 主干网络】YOLOv11+WTConv(ECCV2024): 基于YOLOv11的主干网络改进,大感受野的小波卷积

论文提出了WTConv,这是一个使用级联小波分解的层,并执行一组小卷积核的卷积,每个卷积专注于输入的不同频率带,并具有越来越大的感受野。这个过程能够在输入中对低频信息给予更多重视,同时仅增加少量可训练参数。实际上,对于一个  的感受野,可训练参数数量只随着  的增长而呈对数增长。而WTConv与常规方法的参数平方增长形成对比,能够获得有效的卷积神经网络(CNN),其有效感受野(ERF)大小前所未有。

qq_41304809的博客 1401

ES6、ES7、ES8、ES9、ES10新特性一览

ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言。目前JavaScript使用的ECMAScript版本为ECMA-417。关于ECMA的最新资讯可以浏览 ECMA news查看。 ECMA规范最终由TC39敲定。TC39由包括浏览器厂商在内的各方组成,他们开会推动JavaScript提案沿着一条严格的发展道路前进。 从提案到入选ECMA规范主要有以下几个阶段:...

weixin_34199405的博客 1509

【从零到一】Jetson Nano上YOLOv5部署完全攻略:零基础小白也能玩转边缘AI推理

文章摘要: 本文详细介绍了在Jetson Nano边缘设备上部署YOLOv5目标检测模型的完整流程。从硬件准备、系统镜像烧录、基础环境配置,到CUDA/cuDNN验证、Python虚拟环境搭建及PyTorch安装,逐步指导开发者完成部署准备。教程兼顾理论原理与实践操作,提供Python和C++两种实现方案,并涵盖TensorRT优化、实时检测等生产级应用场景,帮助零基础开发者快速掌握边缘AI推理技术,实现高性能目标检测应用。

LXY_LOVE36的博客 368

ECMAScript 2023(ES14)中的所有新功能

时间的车轮又过去了一年,随之而来的是JavaScript的新官方版本:ECMAScript 2023,也被称为ECMAScript 14。记住,这会创建一个新数组,而不是修改原来的数组。关于规范的另一个要了解的事情是,它实际上是一个活动的文档,在语言在实际应用中使用时会不断发展。toSorted()具有与sort()相同的签名,但它创建一个新的数组,而不是在原数组上进行操作。ECMAScript规范是一份令人印象深刻的文档,既是开发人员和教育者的基本参考,也是JavaScript引擎实现者的官方技术规范。

1096

华为OD机考 新系统真题 【区分奇偶的数组排序】

华为OD机试 新系统真题【区分奇偶的数组排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【区分奇偶的数组排序】多语言题解。

qq_45776114的博客 512

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

如何提升网站加载速度?揭秘 HTML 与 SEO 的优化秘诀

在当今数字化时代,网站的加载速度和优化已经成为网站成功的关键因素之一。随着移动设备的普及和用户对快速加载的需求不断增加,网站的性能优化变得尤为重要。无论是搜索引擎优化(SEO)还是用户体验(UX),页面加载速度都直接影响网站的表现。特别是搜索引擎越来越关注页面加载速度,它已经成为一个不可忽视的排名因素。本文将详细探讨如何通过优化 HTML 代码、减少 DOM 操作、提高图片和资源加载效率,来显著提升网站的加载速度。这些优化不仅能帮助你提升用户体验,还能提升搜索引擎的抓取效率,从而提高网站的整体排名。

吴师兄大模型的博客 1202

开篇词:学习系统分析师的好处?核心考点有哪些?

系统分析师备考指南 系统分析师是IT行业的高级专业人才,具备系统分析与设计能力,能指导开发团队工作。学习系统分析师不仅能获得职业晋升的"黄金跳板",还能全面提升技术架构思维和业务理解能力。 核心价值: 职业发展:晋升管理岗位的硬性要求,突破职业天花板 能力提升:构建T型知识结构,培养架构思维和软技能 市场竞争力:成为"业务+技术"桥梁,获得国家级专业认证 考试内容: 计算机基础知识(硬件、操作系统、网络等) 系统分析专业知识(软件工程、架构设计等) 进阶知识(企业信息

数据知道的博客 5941

前端必备书籍

1.《javaScript DOM 编程艺术》推荐 3 (比较基础,小白入门的话推荐,有基础的话不推荐) 2.《css 权威指南》推荐 2 (书是好书,看了忘了的工具书,写样式谷歌更高效) 3.《css 揭秘》 推荐 5 (不是css入门书籍,css提升必备,最棒的css工具书,css魔法) 4.《JavaScript 语言精粹》 推荐4 (有经验的js可以看看,个人没有...

banglan6053的博客 246

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

选书不迷茫,国内原创佳作推荐,附赠神级优惠码༼⍤༽

▊ 超值购书优惠码限时抢 ▊ 通过coding改变世界,创造更加美好的生活 让我们一起阅读经典,紧跟前沿技术不掉队 爱读书的你们又双叒叕可以下手啦 超大额40元优惠码,助你技术成长一步到位! ♣限时活动大促进行中,每满100减50! 领取实付200减40优惠码,价值400元的图书让你160元轻松带回家! 下单结算页面输入优惠码 【VG6GHV】 ( 注意区分大小写) - 好书早入手,技术早掌握 - ▊ 国内原创好书推荐 1 ...

博文视点(北京)官方博客 783

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ES14(超详细!!!,附上使用代码)

以前,操作系统在将脚本传递给 JS 引擎之前会剥离这些注释。通过此更新,JS 引擎将直接处理这些注释。这些新方法提供了更简洁、更具表达力的方式来操作数组。它们可以帮助我们避免对原始数组进行不必要的修改,从而提高代码的可读性和可维护性。ES2023 引入了四种新的数组操作方法,这些方法不会修改原始数组,而是会返回一个原始数组的拷贝。这两者是在 ES2023 新加入的数组操作方法,这两者有相近的方法,分别是。会是从数组开头开始找寻符合条件的元素,而。:将数组索引处的值,替换为新值。我们可以从字面上理解,

gu644335363的博客 781

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ES13-ES14新特性一览

后续有新增会加进去的 持续关注哈。

qq_42753983的博客 737

ES14-组合查询

1.GET /my_index/my_type/_search { "query": { "bool": { "must": { "match": { "title": "quick" }}, "must_not": { "match": { "title": "lazy" }}, "should": [ { "match": { "title": "brown" }}, { "...

CLA1989的博客 483

ES6 — ES14 新特性

在 JavaScript 中,通过find()和查找数组中的值是一种常见做法。不过,这些方法从数组的开始进行遍历:// {v: 4}// 3如果要从数组的末尾开始遍历,就必须反转数组并使用上述方法。这样做就需要一个额外的数组操作。findLast()和的就解决了这一问题。语义。

热爱可抵岁月漫长 879

ES14 新增特性

ES14 带来多项新特性。数组方面,新增 findLast 与 findLastIndex 支持倒序查找,toSorted、toReversed、toSpliced 和 with 方法分别对应 sort、reverse、splice 和下标修改数组,且不改变原数组。WeakMap 扩展后支持 Symbol 作为键,丰富了使用场景。

m0_74350516的博客 653

ES6~ES14 之 对象篇

通过这些特性,JavaScript 提供了更强大的对象操作能力,同时简化了开发中的繁琐工作。

g18642885147的博客 324

ES14几种方法

1、Array toSorted()方法2.Hashbang语法3、Array toSpliced()方法4. 符号作为 WeakMap 键

2301_79564718的博客 144

从 ES5 到 ES14:深入解析 JavaScript 的演进与特性

本文概述了 JavaScript 从 ES5 到 ES14 的主要特性演进。ES5 引入了严格模式和新的数组方法,提升了代码的安全性和可读性;ES6 带来了 let、const、箭头函数和模块系统等核心特性,标志着 JavaScript 的现代化;ES7 到 ES9 增加了幂运算符、includes 和对象展开运算符;ES10 和 ES11 引入了数组 flat、可选链和空值合并操作符。这些版本的改进,帮助开发者编写更简洁、高效和健壮的代码。

qq_40791475的博客 1825

ECMA 2023(ES14) 新特性

目前,此类主机会剥离 hashbang,以便在传递给 JS 引擎之前生成有效的 JS 源文本。这会将剥离转移到发动机上,它确实统一并标准化了剥离的方式。ECMAScript 是标准化的 JavaScript 语言,于 1997 年发布了第一版,现已发展成为世界上使用最广泛的通用编程语言之一。本 Ecma 标准定义了 ECMAScript 2023 Language,是 ECMAScript 语言规范的第 14 版。上提供了额外的方法,通过返回包含更改的新副本来启用对数组的更改。类似,唯一不同的是它们是。

知秋 725

ES2023(ES14)新特性有什么?

toSpliced`是一种数组操作方法,它与 splice 类似,但 toSpliced 不会修改原数组,而是返回一个新数组,包含删除和新增元素后的结果。它在操作数组时更加安全,因为不会改变原始数据。

stay hungry, stay foolish 778
上一篇: 手写Promise
下一篇: JS防抖和节流
前端大师兄
博客等级 码龄16年 32粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值