ECMAScript 2022
JavaScript-versionnummer
Gamla ECMAScript-versioner namnges efter nummer: ES5 och ES6.
Från och med 2016 namnges versionerna efter året: ES2016, 2018, 2020, 2022.
Nya funktioner i ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Klassfältdeklaration
- Privata metoder och fält
Varning:
Dessa egenskaper är relativt nya.
Gamla webbläsare kan behöva ersättningskod (Polyfill).
JavaScript Array at()
ES2022 introducerade arraymetoder at()
:
Exempel 1
Få tredje elementet i arrayen fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
Exempel 2
Få tredje elementet i arrayen fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
Metoden returnerar det element som är angivet av indexet från arrayen.
at()
Metod och []
Resultaten är desamma.
Från och med mars 2022 stöds detta av alla moderna webbläsare: at()
Metod:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
April 2021 | juli 2021 | juli 2021 | mars 2022 | augusti 2021 |
Observera:
Många språk tillåter användning av negativa index (t.ex. [-1]
)Åtkomst till slutet av objekt/数组/sträng.
Detta är inte möjligt i JavaScript eftersom []
Används för att få tillgång till arrayer och objekt. obj[-1] refererar till värdet för nyckeln -1, inte den sista egenskapen i objektet.
at()
Metoden introducerades i ES2022 för att lösa detta problem.
JavaScript String at()
ES2022 introducerade stringmetoder at()
:
Exempel 1
Få tredje bokstaven i strängen name:
const name = "W3Schools"; let letter = name.at(2);
Exempel 2
Få tredje bokstaven i strängen name:
const name = "W3Schools"; let letter = name[2];
at()
Metoden returnerar den tecken som är på den specificerade indexpositionen från en sträng.
at()
Metod och []
Resultaten är desamma.
Från och med mars 2022 stöds detta av alla moderna webbläsare: at()
Metod:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
April 2021 | juli 2021 | juli 2021 | mars 2022 | augusti 2021 |
RegExp d-modifikator
ES2022 lade till /d
Modifikatorer används för att representera början och slutet av en match.
Exempel
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
RegExp-modifikatorer används för att specificera matchning utan att ta hänsyn till storleks skiljetecken och andra globala sökningar:
Modifikator | Beskrivning | Prova själv |
---|---|---|
g | utföra global matchning (sök alla). | Prova själv |
i | utföra matchning utan att ta hänsyn till storleks skiljetecken. | Prova själv |
d | utföra matchning av understräng (nytt i ES2022). | Prova själv |
m | utföra matchning av flera rader. | Prova själv |
Object.hasOwn()
ES2022 erbjuder ett säkert sätt att kontrollera om en egenskap är en egen egenskap hos ett objekt.
Object.hasOwn()
liknar Object.prototype.hasOwnProperty
men stöder alla objekttyper.
Exempel
Object.hasOwn(myObject, age)
Felorsak
ES2022 tillåter att specificera den grundläggande orsaken till ett fel genom error.cause.
Exempel
connectData(); catch (err) { } throw new Error("Anslutning misslyckades.", { cause: err }); }
JavaScript await import
JavaScript-moduler kan nu vänta på nödvändiga resurser innan de körs:
import {myData} from './myData.js'; const data = await myData();
JavaScript-klassfältdeklarationer
class Hello { counter = 0; // klassfält } const myClass = new Hello(); let x = myClass.counter;
Från och med april 2021 stöds klassfältdeklarationer i alla moderna webbläsare:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019 åren 1 januari | Januari 2020 | 2019 åren 9 september | April 2021 | Januari 2020 |
JavaScript privata metoder och fält
class Hello { #counter = 0; // Privat variabel #myMethod() {} // Privat metod } const myClass = new Hello(); let x = myClass.#counter; // Fel myClass.#myMethod(); // Fel
Från och med juni 2021 stöds privata metoder och fält i alla moderna webbläsare:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
April 2019 | Januari 2020 | Juni 2021 | April 2021 | Juni 2019 |