ECMAScript 2022
JavaScript versionsnummer
Gamle ECMAScript-versioner er navngivet efter tal: ES5 og ES6.
Fra 2016 har versionerne været navngivet efter år: ES2016, 2018, 2020, 2022.
Nye funktioner i ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Klassefeltdeklaration
- Privatmetoder og felter
Advarsel:
Disse funktioner er relativt nye.
Gamle browsere kan kræve erstatnings kode (Polyfill).
JavaScript Array at()
ES2022 har introduceret arraymetoder at()
:
Eksempel 1
Få tredje element i arrayet 'fruits':
const fruits = ['Banana', 'Orange', 'Apple', 'Mango']; let fruit = fruits.at(2);
Eksempel 2
Få tredje element i arrayet 'fruits':
const fruits = ['Banana', 'Orange', 'Apple', 'Mango']; let fruit = fruits[2];
at()
Metoden returnerer elementet på den angivne indeks fra arrayet.
at()
Method is equivalent to []
The results returned are the same.
From March 2022, all modern browsers support at()
Method:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
April 2021 | July 2021 | July 2021 | March 2022 | August 2021 |
Bemærk:
Mange sprog tillader brug af negative indekser (som [-1]
)Adgang til sidste element i objektet/arrays/tekststreng.
Dette er ikke muligt i JavaScript, fordi []
Bruges til at tilgå arrayer og objekter. obj[-1] refererer til værdien af nøglen -1, ikke den sidste egenskab af objektet.
at()
Metoden blev introduceret i ES2022 for at løse dette problem.
JavaScript String at()
ES2022 har introduceret strengmetoder at()
:
Eksempel 1
Få tredje bogstavet i strengen 'name':
const name = "W3Schools"; let letter = name.at(2);
Eksempel 2
Få tredje bogstavet i strengen 'name':
const name = "W3Schools"; let letter = name[2];
at()
Method returns the character at the specified index from the string.
at()
Method is equivalent to []
The results returned are the same.
From March 2022, all modern browsers support at()
Method:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
April 2021 | July 2021 | July 2021 | March 2022 | August 2021 |
RegExp d modifier
ES2022 added /d
Modifiers, used to indicate the start and end of the match.
Instance
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
RegExp modifiers are used to specify case-insensitive matching and other global searches:
Modifier | Description | Try it |
---|---|---|
g | Execute global matching (find all). | Try it |
i | Execute case-insensitive matching. | Try it |
d | Execute substring matching (added in ES2022). | Try it |
m | Execute multi-line matching. | Try it |
Object.hasOwn()
ES2022 provides a safe method to check if a property is an own property of an object.
Object.hasOwn()
Similar to Object.prototype.hasOwnProperty
but supports all object types.
Instance
Object.hasOwn(myObject, age)
Error Cause
ES2022 allows you to specify the root cause of an error through error.cause.
Instance
connectData(); catch (err) { } throw new Error("Connecting failed.", { cause: err }); }
JavaScript await import
JavaScript modules can now wait for the required resources to be imported before running:
import {myData} from './myData.js'; const data = await myData();
JavaScript class field declarations
class Hello { counter = 0; // class field } const myClass = new Hello(); let x = myClass.counter;
From April 2021, class field declarations are supported in all modern browsers:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019 January | Januar 2020 | 2019 September | April 2021 | Januar 2020 |
JavaScript private metoder og felter
class Hello { #counter = 0; // Privat felt #myMethod() {} // Privat metode } const myClass = new Hello(); let x = myClass.#counter; // Fejl myClass.#myMethod(); // Fejl
Fra juni 2021 er private metoder og felter understøttet i alle moderne browsere:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
April 2019 | Januar 2020 | Juni 2021 | April 2021 | Juni 2019 |