ECMAScript 2022
JavaScript 版本号
旧的 ECMAScript 版本用数字命名:ES5 和 ES6。
从 2016 年开始,版本用年份命名:ES2016、2018、2020、2022。
ES2022 中的新特性
警告
这些特性比较新。
旧浏览器可能需要使用替代代码(Polyfill)
JavaScript 数组 at()
ES2022 引入了数组方法 at()
示例
获取水果数组的第三个元素
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits.at(2);
自己尝试 »
获取水果数组的第三个元素
const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[2];
自己尝试 »
at()
方法从数组中返回一个索引元素。
at()
方法返回的结果与 []
相同。
at()
方法在所有现代浏览器中得到支持,从 2022 年 3 月开始
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
2021 年 4 月 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
注意
许多语言允许使用 负括号索引
,如 [-1],以访问对象/数组/字符串的末尾元素。
这在 JavaScript 中是不可能的,因为 [] 用于访问数组和对象。obj[-1] 指的是键 -1 的值,而不是对象的最后一个属性。
at()
方法是在 ES2022 中引入的,以解决此问题。
JavaScript 字符串 at()
ES2022 引入了字符串方法 at()
示例
获取姓名中的第三个字母
const name = "W3Schools";
let letter = name.at(2);
自己尝试 »
获取姓名中的第三个字母
const name = "W3Schools";
let letter = name[2];
自己尝试 »
The at()
方法从字符串中返回索引元素。
at()
方法返回的结果与 []
相同。
at()
方法在所有现代浏览器中得到支持,从 2022 年 3 月开始
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
2021 年 4 月 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
RegExp d 修饰符
ES2022 添加了 /d 修饰符来表示匹配的开始和结束。
RegExp 修饰符用于指定不区分大小写和其他全局搜索
修饰符 | 描述 | 尝试 |
---|---|---|
i | 执行不区分大小写的匹配 | 尝试 » |
g | 执行全局匹配(查找所有) | 尝试 » |
m | 执行多行匹配 | 尝试 » |
d | 执行子字符串匹配(ES2022 中新增) | 尝试 » |
对象 hasOwn
ES2022 提供了一种安全的方法来检查属性是否为对象的自身属性。
Object.hasOwn()
与 Object.prototype.hasOwnProperty
类似,但支持所有对象类型。
错误原因
ES2022 允许您使用 error.cause
指定错误背后的原因。
示例
try { connectData(); } catch (err) { throw new Error("Connecting failed.", { cause: err }); }
自己尝试 »
JavaScript 异步导入
JavasSript 模块现在可以等待需要导入的资源,然后再运行
import {myData} from './myData.js';
const data = await myData();
JavaScript 类字段声明
class Hello {
counter = 0; // 类字段
}
const myClass = new Hello();
let x = myClass.counter;
类字段声明在 2021 年 4 月以来的所有现代浏览器中都受支持
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019 年 1 月 | 2020 年 1 月 | 2019 年 9 月 | 2021 年 4 月 | 2020 年 1 月 |
JavaScript 私有方法和字段
class Hello {
#counter = 0; // 私有字段
#myMethod() {} // 私有方法
}
const myClass = new Hello();
let x = myClass.#counter; // 错误
myClass.#myMethod(); // 错误
私有方法和字段在 2021 年 6 月以来的所有现代浏览器中都受支持
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
2019 年 4 月 | 2020 年 1 月 | 2021 年 6 月 | 2021 年 4 月 | 2019 年 6 月 |