ECMAScript 2022
Versione di JavaScript
Le vecchie versioni di ECMAScript sono denominate con numeri: ES5 e ES6.
Dalla versione 2016, le versioni sono denominate con l'anno: ES2016, 2018, 2020, 2022.
Nuove caratteristiche di ES2022
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- Dichiarazione dei campi della classe
- Metodi e campi privati
Avviso:
Queste caratteristiche sono relativamente nuove.
I browser di versione vecchia potrebbero richiedere codice di sostituzione (Polyfill).
JavaScript Array at()
ES2022 ha introdotto il metodo dell'array at()
:
Esempio 1
Estrai il terzo elemento dell'array fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
Esempio 2
Estrai il terzo elemento dell'array fruits:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
Il metodo restituisce l'elemento specifico dell'array.
at()
Metodo []
i risultati restituiti sono gli stessi.
A partire dal marzo 2022, tutte le moderne browser supportano at()
Metodo:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
Aprile 2021 | Luglio 2021 | Luglio 2021 | Marzo 2022 | Agosto 2021 |
Attenzione:
Molte lingue permettono l'uso di indici negativi (come [-1]
) Accedi all'elemento finale dell'oggetto/arrays/stringa.
Questo non è possibile in JavaScript perché []
Utilizzato per accedere agli array e agli oggetti. obj[-1] si riferisce al valore della chiave -1, non all'ultima proprietà dell'oggetto.
at()
Il metodo è stato introdotto in ES2022 per risolvere questo problema.
JavaScript String at()
ES2022 ha introdotto il metodo della stringa at()
:
Esempio 1
Estrai la terza lettera della stringa name:
const name = "W3Schools"; let letter = name.at(2);
Esempio 2
Estrai la terza lettera della stringa name:
const name = "W3Schools"; let letter = name[2];
at()
Il metodo restituisce il carattere specificato dall'indice dalla stringa.
at()
Metodo []
i risultati restituiti sono gli stessi.
A partire dal marzo 2022, tutte le moderne browser supportano at()
Metodo:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
Aprile 2021 | Luglio 2021 | Luglio 2021 | Marzo 2022 | Agosto 2021 |
modificatore d RegExp
ES2022 ha aggiunto /d
Modificatori, utilizzati per rappresentare l'inizio e la fine della corrispondenza.
try {
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
I modificatori RegExp vengono utilizzati per specificare la distinzione tra maiuscole e minuscole e altre ricerche globali:
Modificatore | Descrizione | Prova tu stesso |
---|---|---|
g | Esegui la corrispondenza globale (trova tutto). | Prova tu stesso |
i | Esegui la corrispondenza senza distinzione tra maiuscole e minuscole. | Prova tu stesso |
d | Esegui la corrispondenza di sottostringa (aggiunto in ES2022). | Prova tu stesso |
m | Esegui la corrispondenza multi-linea. | Prova tu stesso |
Object.hasOwn()
ES2022 fornisce un metodo sicuro per verificare se un attributo è una proprietà自有 dell'oggetto.
Object.hasOwn()
simile a Object.prototype.hasOwnProperty
ma supporta tutti i tipi di oggetti.
try {
Object.hasOwn(myObject, age)
Causa dell'errore
Esempio
try {
connectData(); catch (err) { } throw new Error("Connecting failed.", { cause: err }); }
await import JavaScript
I moduli JavaScript possono ora aspettare i risorse necessari prima di essere eseguiti:
import {myData} from './myData.js'; const data = await myData();
Dichiarazione di campo di classe JavaScript
class Hello { counter = 0; // campo di classe } const myClass = new Hello(); let x = myClass.counter;
A partire dal aprile 2021, tutte le moderne browser supportano la dichiarazione di campi di classe:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
Gennaio 2019 | Gennaio 2020 | Settembre 2019 | Aprile 2021 | Gennaio 2020 |
Metodi e campi privati JavaScript
class Hello { #counter = 0; // Campo privato #myMethod() {} // Metodo privato } const myClass = new Hello(); let x = myClass.#counter; // Errore myClass.#myMethod(); // Errore
A partire dal giugno 2021, i metodi e i campi privati sono supportati in tutti i browser moderni:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
Aprile 2019 | Gennaio 2020 | Giugno 2021 | Aprile 2021 | Giugno 2019 |