Specifiche ECMAScript 2020 per JavaScript approvate

ECMAScript 2020, la versione più recente della specifica ufficiale alla base di JavaScript, è stata formalmente approvata da ECMA International e dal comitato tecnico ECMA che ha supervisionato la specifica, il 16 giugno. 

ECMAScript 2020 introduce molteplici funzionalità che vanno da una nuova  import() struttura per il caricamento dei moduli a un nuovo  BigInt tipo per lavorare con numeri interi di precisione arbitraria. 

Le caratteristiche specifiche introdotte da ECMAScript 2020 includono:

  • Un import()modulo "simile a una funzione" che carica la sintassi per importare in modo asincrono i moduli con uno specificatore dinamico. La proposta aggiunge una import(specifier)forma sintattica, agendo in molti modi come una funzione. Restituisce una promessa per l'oggetto spazio dei nomi del modulo del modulo richiesto, creato dopo aver recuperato, istanziato e valutato le dipendenze di un modulo, insieme al modulo stesso. Il  specifiersaranno interpretati allo stesso modo come in una importdichiarazione. Sebbene specifiersia una stringa, non è necessariamente una stringa letterale; quindi, il codice simile import(`./language-packs/${navigator.language}.js`)funzionerà. Ciò non è stato possibile con le solite importdichiarazioni. Con il pianoimport() si propone di lavorare sia con i moduli che con gli script, dando al codice dello script un facile punto di ingresso asincrono nel mondo dei moduli e permettendogli di avviare l'esecuzione del codice del modulo.
  • BigInt,una nuova primitiva numero per lavorare con numeri interi di precisione arbitraria. BigIntpuò rappresentare numeri maggiori di due alla 53a potenza, il numero più grande che JavaScript può rappresentare in modo affidabile con la Numberprimitiva. A BigIntviene creato aggiungendo nalla fine del numero intero o chiamando il costruttore.
  • Il matchAllmetodo per le stringhe, per produrre un iteratore per tutti gli oggetti corrispondenti generati da un'espressione regolare globale. La logica alla base di questa proposta è che se uno sviluppatore ha una stringa e un'espressione regolare appiccicosa o globale con più gruppi di acquisizione, lo sviluppatore potrebbe voler iterare attraverso tutte le corrispondenze, per le quali ci sono attualmente diverse opzioni ma con limitazioni. String#matchAll risolve i problemi fornendo accesso a tutti i gruppi di acquisizione e non modificando visibilmente l'oggetto dell'espressione regolare in questione.
  • Promise.allSettled, un nuovo combinatore Promise che non va in cortocircuito. Ciò restituisce una promessa che viene mantenuta con una serie di istantanee dello stato della promessa, ma solo dopo che le promesse originali sono state saldate, ovvero sono state soddisfatte o rifiutate.
  • globalThis, fornendo un modo universale per accedere al thisvalore globale .
  • Una export * as ns from ‘module’sintassi dedicata da utilizzare all'interno dei moduli.
  • Maggiore standardizzazione for-indell'ordine di enumerazione, specificando parzialmente l'ordine di enumerazione in JavaScript.
  • import.meta,un oggetto popolato dall'host nei moduli che può contenere informazioni contestuali. Serve come metaproprietà JavaScript, che contiene i metadati specifici dell'host sul modulo corrente.
  • Nullish coalescing, un operatore di selezione del valore per una migliore gestione dei casi che coinvolgono gli accessi alla proprietà. È una funzionalità di sintassi per migliorare il lavoro con valori "nulli" ( nullo non definiti).
  • Concatenamento opzionale, un accesso alla proprietà e un operatore di chiamata di funzione che andrà in cortocircuito se il valore per accedere / invocare è nullo. 

L'ultimo aggiornamento a ECMAScript, ECMAScript 2019, presentava funzionalità come prototype.flatMap per gli array annidati.