ECMAScript 2021
JavaScript 版本号
旧版 JS 版本以数字命名:ES5(2009)和 ES6(2015)。
从 2016 年起,版本按年份命名:ECMAScript 2016、2017、2018、2019……
ES2021 中的新功能
- 承诺任何():
const first = await Promise.any([prom1,prom2,prom3]);
- 字符串 replaceAll()
- 数字分隔符 (_)
ES2022 中的新功能
警告
这些功能相对较新。
旧版浏览器可能需要替代代码(Polyfill)
JavaScript 字符串 ReplaceAll()
ES2021 引入了 string 方法 replaceAll()
:
这 replaceAll()
方法允许您指定正则表达式而不是要替换的字符串。
如果参数是正则表达式,则必须设置全局标志 (g);否则会抛出 TypeError。
笔记
ES2020 引入了字符串方法 matchAll()。
JavaScript 数字分隔符 (_)
ES2021 引入了数字分隔符(_),以使数字更具可读性:
数字分隔符仅供视觉使用。
数字分隔符可以放在数字中的任何位置:
笔记
数字分隔符不允许位于数字的开头或结尾。
在 JavaScript 中只有变量可以以 _ 开头。
自 2020 年 1 月起,所有现代浏览器都支持数字分隔符:
Chrome 75 | 边缘 79 | Firefox 74 | Safari 13.1 | 歌剧 67 |
2019 年 6 月 | 2020 年 1 月 | 2019 年 10 月 | 2019 年 9 月 | 2019 年 6 月 |
JavaScript 数组 at()
ES2022 引入了数组方法 at()
:
例子
获取水果的第三个元素:
const 水果 = ["香蕉", "橙子", "苹果", "芒果"];
让水果 = 水果.at(2);
亲自尝试 »
获取水果的第三个元素:
const 水果 = ["香蕉", "橙子", "苹果", "芒果"];
让水果 = 水果[2];
亲自尝试 »
这 at()
方法从数组中返回一个索引元素。
这 at()
方法返回与[]
.
这 at()
自 2022 年 3 月起,所有现代浏览器都支持该方法:
Chrome 92 | 边缘 92 | Firefox 90 | Safari 15.4 | 歌剧 78 |
2021 年 4 月 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
笔记
许多语言允许 negative bracket indexing
像 [-1] 从对象/数组/字符串的末尾访问元素。
在 JavaScript 中这是不可能的,因为 [] 用于访问数组和对象。obj[-1] 指的是键 -1 的值,而不是对象的最后一个属性。
这 at()
ES2022 中引入了方法来解决这个问题。
JavaScript 字符串 at()
ES2022 引入了 string 方法 at()
:
例子
获取名称的第三个字母:
const 名称 = “W3Schools”;
让 letter = name.at(2);
亲自尝试 »
获取名称的第三个字母:
const 名称 = “W3Schools”;
让字母 = 名称[2];
亲自尝试 »
这 at()
方法从字符串中返回一个索引元素。
这 at()
方法返回与[]
.
这 at()
自 2022 年 3 月起,所有现代浏览器都支持该方法:
Chrome 92 | 边缘 92 | Firefox 90 | Safari 15.4 | 歌剧 78 |
2021 年 4 月 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |