ECMAScript 2022

Numer wersji JavaScript

Starsze wersje ECMAScript są nazywane liczbami: ES5 i ES6.

Od 2016 roku wersje są nazywane rokiem: ES2016, 2018, 2020, 2022.

Nowe funkcje ES2022

Ostrzeżenie:

Te cechy są stosunkowo nowe.

W starszych przeglądarkach może być konieczne użycie zamiennego kodu (Polyfill).

JavaScript Array at()

ES2022 wprowadził metodę tablicy at():

Przykład 1

Uzyskaj trzeci element tablicy fruits:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits.at(2);

Spróbuj sam

Przykład 2

Uzyskaj trzeci element tablicy fruits:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[2];

Spróbuj sam

at() Metoda zwraca element o określonym indeksie z tablicy.

at() Metoda jest podobna do [] Zwracane wyniki są takie same.

Od marca 2022 roku, wszystkie nowoczesne przeglądarki wspierają: at() Metoda:

Chrome Edge Firefox Safari Opera
Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Kwiecień 2021 roku lipiec 2021 roku lipiec 2021 roku marzec 2022 roku sierpień 2021 roku

Uwaga:

Wiele języków zezwala na użycie ujemnych indeksów (np. [-1]) Dostęp do końcowego elementu obiektu/tablicy/łańcucha znaków.

To nie jest możliwe w JavaScript, ponieważ [] Używana do dostępu do tablic i obiektów. obj[-1] wskazuje wartość klucza -1, a nie ostatnią właściwość obiektu.

at() Metoda została wprowadzona w ES2022, aby rozwiązać ten problem.

JavaScript String at()

ES2022 wprowadził metodę łańcucha znaków at():

Przykład 1

Uzyskaj trzeci znak ciągu znaków name:

const name = "W3Schools";
let letter = name.at(2);

Spróbuj sam

Przykład 2

Uzyskaj trzeci znak ciągu znaków name:

const name = "W3Schools";
let letter = name[2];

Spróbuj sam

at() Metoda zwraca znak o zadanym indeksie z ciągu znaków.

at() Metoda jest podobna do [] Zwracane wyniki są takie same.

Od marca 2022 roku, wszystkie nowoczesne przeglądarki wspierają: at() Metoda:

Chrome Edge Firefox Safari Opera
Chrome 92 Edge 92 Firefox 90 Safari 15.4 Opera 78
Kwiecień 2021 roku lipiec 2021 roku lipiec 2021 roku marzec 2022 roku sierpień 2021 roku

modyfikator d w RegExp

ES2022 dodał /d Modyfikatory, które oznaczają początek i koniec dopasowania.

Instancja

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

Spróbuj sam

Modyfikatory RegExp służą do określenia bez rozróżniania wielkości oraz innych wyszukiwań globalnych:

Modyfikator Opis Spróbuj sam
g Wykonaj dopasowanie globalne (wyszukiwanie wszystkich). Spróbuj sam
i Wykonaj dopasowanie bez rozróżniania wielkości. Spróbuj sam
d Wykonaj dopasowanie podstringu (nowo dodane w ES2022). Spróbuj sam
m Wykonaj dopasowanie wielokrotne. Spróbuj sam

Object.hasOwn()

ES2022 oferuje bezpieczny sposób sprawdzania, czy właściwość jest własnością obiektu.

Object.hasOwn() Podobnie jak Object.prototype.hasOwnPropertyale obsługuje wszystkie typy obiektów.

Instancja

Object.hasOwn(myObject, age)

Spróbuj sam

Przyczyna błędu

ES2022 pozwala określić podstawową przyczynę błędu za pomocą error.cause.

Instancja

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

Spróbuj sam

await import w JavaScript

Moduły JavaScript mogą teraz czekać na wymagane zasoby przed uruchomieniem:

import {myData} from './myData.js';
const data = await myData();

Deklaracje pól klas w JavaScript

class Hello {
  counter = 0; // pole klasy
}
const myClass = new Hello();
let x = myClass.counter;

Od kwietnia 2021 roku, wszechstronne przeglądarki wspierają deklaracje pól klas:

Chrome Edge Firefox Safari Opera
Chrome 72 Edge 79 Firefox 69 Safari 14.1 Opera 60
Styczeń 2019 roku Styczeń 2020 roku Wrzesień 2019 roku Kwiecień 2021 roku Styczeń 2020 roku

Prywatne metody i pola w JavaScript

class Hello {
  #counter = 0;  // Prywatne pole
  #myMethod() {} // Prywatna metoda
}
const myClass = new Hello();
let x = myClass.#counter; // Błąd
myClass.#myMethod();      // Błąd

Od czerwca 2021 roku, prywatne metody i pola są obsługiwane we wszystkich nowoczesnych przeglądarkach:

Chrome Edge Firefox Safari Opera
Chrome 74 Edge 79 Firefox 90 Safari 14.1 Opera 62
Kwiecień 2019 roku Styczeń 2020 roku Czerwiec 2021 roku Kwiecień 2021 roku Czerwiec 2019 roku