前言
2023年6月27日,第125届ECMA会议即将批准ECMAScript2023语言规范,这意味着它现在将成为最新的ECMAScript标准。 下面我们就来看看ECMAScript2023的新特性吧!
01 概述
1)从头到尾搜索字段:findLast()、findLastIndex();
2)Hashbang句型;
3)通过复制修改字段:toReversed()、toSorted()、toSpliced()、with();
4)Symbol作为WeakMap的key。
02 详细介绍
2-1 查找最后一个()
字段的find方法常用于查找过去满足条件的元素
如果我们先从后面寻找元素怎么办? 然后你可以使用 array.findLast
2-2查找最后一个索引
我们可以使用findLastIndex来查找链表末尾元素的位置
2-3 Hashbang句型
Unix 命令行脚本都支持#! 命令,也称为 Hashbang。 该命令放在脚本的第一行,用于指定脚本的执行者。 Hashbang 只是想介绍#! JavaScript 脚本的命令。 该命令写在脚本文件或模块文件的第一行:
这样Unix命令行就可以直接执行脚本了:
但在这种情况下,hashbang必须严格位于文件头,否则会出现句子错误,使得这个JavaScript脚本文件难以使用
2-4 链表无损方式(通过复制修改链表)
Array.prototype.toReversed()
Array.prototype.toSorted()
Array.prototype.toSpliced()
Array.prototype.with()
我们知道ecmascript有什么特性,大多数分组方法都是非破坏性的,即不会修改filter等原始链表
事实上,还有一些破坏性的方法会在执行过程中改变原来的链表,比如sort()方法:
在链表方法中,以下方法是破坏性的:
撤销()
种类()
拼接()
如果你想让这个链表方法应用到链表上而不改变它,你可以使用以下方法之一:
正如您所看到的,我们首先需要创建链表的副本,然后对该副本进行更改。 因此引入了这三种方法的无损版本,这样就不需要自动创建副本然后进行操作:
verse() 的非破坏性版本:toReversed()
sort() 的非破坏性版本:toSorted(compareFn)
splice() 的非破坏性版本:toSpliced(start,deleteCount,...items)
这个函数属性被引入到 Array.prototype 中:
Array.prototype.toReversed()
Array.prototype.toSorted(compareFn)
Array.prototype.toSpliced(开始,deleteCount,...items)
Array.prototype.with(索引,值)
另外,还有一个新的无损方法:with()。该方法会以无损的方式替换给定索引处的链表元素,即arr[index]=value的无损版本
Array.prototype.toReversed()
toReversed() 是reverse() 方法的非破坏性版本:
Array.prototype.toSorted()
toSorted() 是 sort() 方法的非破坏性版本:
Array.prototype.toSpliced()
splice()方法比其他方法更复杂,其用法是:splice(start,deleteCount,...items)。 该方法将从起始索引处删除deleteCount个元素,然后将元素插入到起始索引处的item中ecmascript有什么特性,最后返回删除的元素。
toSpliced 是 splice() 方法的非破坏性版本。 它会返回更新后的字段,原来的字段不会改变,很难获取到已经被删除的元素:
Array.prototype.with()
使用 .with() 技巧:.with(index,value),它是 arr[index]=value 的非破坏性版本:
WeakMap 支持使用 Symbol 作为 key
很久以前,我们只能使用一个对象作为 WeakMap 的 key。
现在我们使用“Symbol”作为“WeakMap”的键。
03浏览器支持
目前主流浏览器都支持以上方式