ECMAScript 2022

شماره نسخه 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، همه مرورگرهای مدرن از 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