ECMAScript 2022

  • الصفحة السابقة JS 2021
  • الصفحة التالية JS 2023

رقم إصدار JavaScript

تم تسمية إصدارات ECMAScript القديمة بأرقام: ES5 وES6.

بدءًا من عام 2016، يتم تسمية الإصدارات بفقاعات السنوات: ES2016، 2018، 2020، 2022.

ميزات جديدة في ES2022

تحذير:

هذه الخصائص جديدة نسبيًا.

قد تحتاج المتصفحات القديمة إلى شيفرة بديلة (Polyfill).

JavaScript Array at()

أدخل ES2022 طريقة المجموعات 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 لأن [] تستخدم لاستدعاء القيم من المجموعات والمساحات. obj[-1] تشير إلى قيمة المفتاح -1 وليس إلى الخاصية الأخيرة للمساحة.

at() تم إدخال هذه الطريقة في ES2022 لحل هذه المشكلة.

JavaScript String at()

أدخل ES2022 طريقة النصوص 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 修饰符,用于表示匹配的开始和结束。

实例

let text = "aaaabb";
let result = text.match(/(aa)(bb)/d);

亲自试一试

RegExp 修饰符用于指定不区分大小写,以及其他全局搜索:

修饰符 描述 试一试
g 执行全局匹配(查找所有)。 试一试
i 执行不区分大小写的匹配。 试一试
d 执行子字符串匹配(ES2022 新增)。 试一试
m 执行多行匹配。 试一试

Object.hasOwn()

ES2022 提供了一种安全的方法来检查属性是否是对象的自有属性。

Object.hasOwn() 类似于 Object.prototype.hasOwnProperty,但支持所有对象类型。

实例

Object.hasOwn(myObject, age)

亲自试一试

Error Cause

ES2022 允许通过 error.cause 指定错误的根本原因。

实例

try { 
  connectData(); 
} catch (err) { 
  throw new Error("Connecting failed.", { cause: err }); 
}

亲自试一试

JavaScript await import

JavaScript 模块现在可以在运行前等待需要导入的资源:

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 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
  • الصفحة السابقة JS 2021
  • الصفحة التالية JS 2023