ECMAScript 2020, den sidste version af den officielle specifikation, der ligger til grund for JavaScript, blev formelt godkendt af ECMA International og ECMA's tekniske udvalg, der overvåger specifikationen, den 16. juni.
ECMAScript 2020 introducerer flere funktioner lige fra en nyimportere()
mulighed for at indlæse moduler til en nyBigInt
type til at arbejde med vilkårlige præcisions heltal.
Specifikke funktioner introduceret af ECMAScript 2020 inkluderer:
- En "funktionsagtig"
importere()
modul indlæser syntaks til asynkront importere moduler med en dynamisk specifikator. Forslaget tilføjer enimport (specificer)
syntaktisk form, der fungerer på mange måder som en funktion. Det returnerer et løfte om modulets navneområdeobjekt for det anmodede modul, oprettet efter hentning, instantiering og evaluering af modulets afhængigheder sammen med selve modulet. Detspecifikator
vil blive fortolket på samme måde som i etimportere
erklæring. Mensspecifikator
er en streng, det er ikke nødvendigvis en streng bogstavelig; således kode somimport (`./language-packs / $ {navigator.language} .js`)
vil arbejde. Dette var ikke muligt med det sædvanligeimportere
erklæringer. Med planenimportere()
foreslås at arbejde i både moduler og scripts, hvilket giver scriptkode et let asynkront indgangspunkt i modulverdenen og giver det mulighed for at starte kørsel af modulkode. BigInt,
et nyt tal, der er primitivt til at arbejde med vilkårlige præcisionstal.BigInt
kan repræsentere tal større end to til 53. magt, det største antal JavaScript kan repræsentere pålideligt medNummer
primitiv. ENBigInt
oprettes ved at tilføjen
til slutningen af heltalet eller ved at kalde konstruktøren.- Det
matchAlle
metode til strenge, til at producere en iterator til alle matchede objekter genereret af et globalt regulært udtryk. Begrundelsen bag dette forslag er, at hvis en udvikler har en streng og enten et klæbrig eller et globalt regulært udtryk med flere fangstgrupper, vil udvikleren muligvis gentage alle kampene, for hvilke der i øjeblikket er flere muligheder, men med begrænsninger.String # matchAll
løser problemer ved at give adgang til alle fangende grupper og ikke synligt mutere det pågældende regulære ekspressionsobjekt. Promise.allSettled
, en ny Promise-kombinator, der ikke kortslutter. Dette returnerer et løfte, der er opfyldt med en række løftestatus-snapshots, men først efter at de oprindelige løfter er afgjort, dvs. er enten opfyldt eller afvist.globalt Dette
, der giver en universel måde at få adgang til det globaledet her
værdi.- En dedikeret
eksport * som ns fra 'modul'
syntaks til brug inden for moduler. - Øget standardisering af
for-in
enumeration order, delvis specificering af enumeration order i JavaScript. import.meta,
et værtsbefolket objekt i moduler, der kan indeholde kontekstuelle oplysninger. Dette fungerer som en JavaScript-metaproperty, der indeholder værtsspecifikke metadata om det aktuelle modul.- Nullish coalescing, en værdivalgsoperatør til bedre håndtering af sager, der involverer adgang til ejendom. Det er en syntaksfunktion, der forbedrer arbejdet med "nullish" -værdier (
nul
eller udefineret). - Valgfri kæde, en ejendomsadgangs- og funktionsopkaldsoperatør, der kortslutter, hvis værdien for adgang / påkald er ugyldig.
Den sidste opdatering til ECMAScript, ECMAScript 2019, indeholdt funktioner såsom prototype.flatMap
til indlejrede arrays.