ECMAScript 2022
เวอร์ชั่นหมายเลขของ JavaScript
เวอร์ชั่น ECMAScript เก่าตั้งชื่อด้วยตัวเลข: ES5 และ ES6
ตั้งแต่ปี 2016 มาตั้งชื่อเวอร์ชั่นด้วยปี: ES2016, 2018, 2020, 2022
คุณสมบัติใหม่ของ ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- การประกาศสมาธิรักษ์ของรูป
- วิธีและสมาธิรักษ์เปิดเผย
แจ้งเตือน:
คุณสมบัติเหล่านี้เป็นของเรียนใหม่
เวอร์ชั่นเบราซเรอร์เก่าอาจจำเป็นต้องใช้โค้ดแทน (Polyfill)
JavaScript Array at()
ES2022 ได้นำเข้าวิธีที่แสดงคำว่า array at()
:
ตัวอย่าง 1
ได้รับองค์ประกอบที่สามของรายการ fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
ตัวอย่าง 2
ได้รับองค์ประกอบที่สามของรายการ fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
วิธีนี้คืนองค์ประกอบที่มีดัชนีที่กำหนดในรายการ
at()
方法与 []
返回的结果相同。
自 2022 年 3 月起,所有现代浏览器中均支持 at()
方法:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
เมษายน 2021 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
แจ้งเตือน:
หลายภาษาอนุญาตใช้ดัชนีลบ (เช่น [-1]
)เข้าถึงองค์ประกอบสุดท้ายของประเภทเป้าหมาย
นี่ไม่สามารถทำได้ใน JavaScript เพราะ []
ใช้เพื่อเข้าถึงรายการและประเภทสิ่ง
at()
วิธีนี้ได้นำเข้าใน ES2022 เพื่อแก้ปัญหานี้
JavaScript String at()
ES2022 ได้นำเข้าวิธีที่แสดงคำว่า string at()
:
ตัวอย่าง 1
ได้รับอักษรที่สามของตัวแปร name:
const name = "W3Schools"; let letter = name.at(2);
ตัวอย่าง 2
ได้รับอักษรที่สามของตัวแปร name:
const name = "W3Schools"; let letter = name[2];
at()
方法从字符串中返回指定索引的字符。
at()
方法与 []
返回的结果相同。
自 2022 年 3 月起,所有现代浏览器中均支持 at()
方法:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
เมษายน 2021 | 2021 年 7 月 | 2021 年 7 月 | 2022 年 3 月 | 2021 年 8 月 |
RegExp d 修饰符
ES2022 添加了 /d
修饰符,用于表示匹配的开始和结束。
try {
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
RegExp 修饰符用于指定不区分大小写,以及其他全局搜索:
修饰符 | 描述 | 试一试 |
---|---|---|
g | 执行全局匹配(查找所有)。 | 试一试 |
i | 执行不区分大小写的匹配。 | 试一试 |
d | 执行子字符串匹配(ES2022 新增)。 | 试一试 |
m | 执行多行匹配。 | 试一试 |
Object.hasOwn()
ES2022 提供了一种安全的方法来检查属性是否是对象的自有属性。
Object.hasOwn()
类似于 Object.prototype.hasOwnProperty
,但支持所有对象类型。
try {
Object.hasOwn(myObject, age)
Error Cause
ตัวอย่าง
try {
connectData(); catch (err) { } throw new Error("Connecting failed.", { cause: err }); }
await import JavaScript
JavaScript โมดูลสามารถรอครบทรัพยากรที่ต้องการนำเข้าก่อนที่จะปฏิบัติงาน:
import {myData} from './myData.js'; const data = await myData();
ประกาศฟิลด์คลาส JavaScript
class Hello { counter = 0; // ฟิลด์คลาส } const myClass = new Hello(); let x = myClass.counter;
ตั้งแต่เดือนเมษายน 2021 ข้างนี้ ทุกบราวเซอร์สมัยใหม่เข้าใจการประกาศฟิลด์ในรูปแบบคลาส:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019 มกราคม | มกราคม 2020 | 2019 สิงหาคม | เมษายน 2021 | มกราคม 2020 |
JavaScript วิธีและสิ่งส่วนตัว
class Hello { #counter = 0; // สิ่งส่วนตัว #myMethod() {} // วิธีส่วนตัว } const myClass = new Hello(); let x = myClass.#counter; // ผิดพลาด myClass.#myMethod(); // ผิดพลาด
ตั้งแต่เดือนมิถุนายน 2021 มีการสนับสนุนวิธีและสิ่งส่วนตัวในทุกเบราเซอร์สมัยใหม่:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
เมษายน 2019 | มกราคม 2020 | มิถุนายน 2021 | เมษายน 2021 | มิถุนายน 2019 |