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 روشهای آرایه را معرفی کرده است 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، همه مرورگرهای مدرن از at()
روش:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
آوریل 2021 | جولای 2021 | جولای 2021 | مارس 2022 | آگوست 2021 |
توجه داشته باشید:
بسیاری از زبانها استفاده از شاخص منفی را مجاز میدانند (مانند [-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، همه مرورگرهای مدرن از at()
روش:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
آوریل 2021 | جولای 2021 | جولای 2021 | مارس 2022 | آگوست 2021 |
ویرایشگر d RegExp
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)
دلیل خطا
ES2022 اجازه میدهد با استفاده از error.cause به علت اصلی خطا اشاره شود.
مثال
try { connectData(); } throw new Error("اتصال شکست خورد.", { cause: err }); }
وارد کردن منتظر جاوااسکریپت
مدولهای جاوااسکریپت اکنون میتوانند در حال اجرا بودن منتظر منابع مورد نیاز برای وارد کردن باشند:
import {myData} from './myData.js'; const data = await myData();
تعریف حیطههای کلاسیک جاوااسکریپت
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 |