原文 What’s new in ECMAScript 2023
2023.4.18 by Pawel
在阅读了上一次 TC39 会议的记录之后,似乎已经知道了即将推出的 JavaScript 的新功能列表。ECMAScript规范的最终版本预计将在 6 月底发布。
最后而且最重要的是,我们正在削减 ES2023。我们将其冻结,或者更确切地说,我应该说我们已经将其冻结。我们不希望再有任何重大的编辑性变化。可能会有至少几个非常小的编辑性微调,但没有大的变化。
让我分享一下所有达到第4阶段的新功能列表,这些功能预计将包含在即将推出的ECMAScript版本中。就像我在2022、 2021、 2020、 2019、 2018,、2017 和 2016 年所做的那样。
从后向前查找数组元素
由Wenlu Wang提出的“从后向前查找数组元素”提案在Array和TypedArray原型上添加了findLast()和findLastIndex()方法。它们与find()和findIndex()方法具有相同的功能,但顺序相反。这两种方法很方便,让我们避免创建临时副本、突变和混淆的索引。
1 | const isEven = (number) => number % 2 === 0; |
Hashbang语法
Hashbang,也称为shebang ,是可执行脚本开头的一系列字符,用于定义要运行的程序的解释器。当Unix内核的程序加载器执行JavaScript程序时,主机会剥离hashbang以生成有效的源代码,然后将其传递给引擎。Bradley Farias提出的Hashbang语法提案规范了这个过程。
1 | #!/usr/bin/env node |
Symbol作为WeakMap键
在JavaScript中,对象和Symbol保证是唯一的,不能重新创建,这使它们都成为WeakMap键的理想候选者。先前的版本或规范只允许使用对象作为键,但幸运的是,由Daniel Ehrenberg、Richard Button、Robin Ricard、Leo Balter、Rick Waldron和Caridy Patiño提出的Symbol作为WeakMap键提案将未注册的Symbol添加到允许的键列表中。
1 | const weak = new WeakMap(); |
通过复制改变数组
Array.prototype
上的 reverse()
、sort()
和 splice()
方法会就地突变数组。Ashley Claymore 和 Robin Ricard 提出的 Change Array by Copy proposal 添加了 toReversed()
、toSorted()
和 toSpliced()
方法的副本,它们会返回一个新的数组。此提议还添加了一个 with()
方法,该方法返回一个新数组,其中给定索引处的元素用给定值替换,以避免使用括号表示法进行就地突变。
1 | const original = [1, 2, 3, 4]; |