ECMAScript 2020-specifikation för JavaScript-godkänd

ECMAScript 2020, den sena versionen av den officiella specifikationen som ligger till grund för JavaScript, godkändes formellt av ECMA International och ECMA: s tekniska kommitté som övervakade specifikationen den 16 juni. 

ECMAScript 2020 introducerar flera funktioner som sträcker sig från en ny  import() anläggning för laddning av moduler till en ny  BigInt typ för arbete med godtyckliga precisionstal. 

Specifika funktioner introducerade av ECMAScript 2020 inkluderar:

  • En “funktionsliknande” import()modul som laddar syntax för att asynkront importera moduler med en dynamisk specifikator. Förslaget lägger till en import(specifier)syntaktisk form som fungerar på många sätt som en funktion. Det returnerar ett löfte för modulnamnrymdobjektet för den begärda modulen, skapad efter att ha hämtat, omedelbart och utvärderat en moduls beroenden, tillsammans med själva modulen. Den  specifierkommer att tolkas på samma sätt som i en importdeklaration. Medan det specifierär en sträng är det inte nödvändigtvis en sträng bokstavlig; så import(`./language-packs/${navigator.language}.js`)fungerar kod som . Detta var inte möjligt med de vanliga importdeklarationerna. Med planen,import() föreslås fungera i både moduler och skript, vilket ger skriptkoden en enkel asynkron ingångspunkt i modulvärlden och låter den börja köra modulkoden.
  • BigInt,ett nytt nummer som är primitivt för att arbeta med godtyckliga precisionstal. BigIntkan representera siffror större än två till 53: e makten, det största antalet JavaScript kan representera pålitligt med Numberprimitivet. A BigIntskapas genom att lägga ntill slutet av heltalet eller genom att ringa konstruktören.
  • Den matchAllmetod för stråkar, för att producera en iterator för alla matchade föremål som genereras av en global reguljära uttryck. Motivet bakom detta förslag är att om en utvecklare har en sträng och antingen ett klibbigt eller ett globalt regelbundet uttryck med flera fångningsgrupper, kan utvecklaren vilja itera igenom alla matchningar, för vilka det för närvarande finns flera alternativ men med begränsningar. String#matchAll åtgärdar problem genom att ge åtkomst till alla fångande grupper och inte synligt mutera det aktuella reguljära uttrycksobjektet.
  • Promise.allSettled, en ny Promise-kombinator som inte kortsluter. Detta returnerar ett löfte som uppfylls med en uppsättning av snapshots för löftestatus, men först efter att de ursprungliga löften har lösts, dvs. har antingen uppfyllts eller avvisats.
  • globalThis, som ger ett universellt sätt att få tillgång till det globala thisvärdet.
  • En dedikerad export * as ns from ‘module’syntax att använda inom moduler.
  • Ökad standardisering av for-inuppräkningsordning, delvis specificering av uppräkningsordning i JavaScript.
  • import.meta,ett värdpopulerat objekt i moduler som kan innehålla kontextuell information. Detta fungerar som en JavaScript-metaproperty som innehåller värdspecifika metadata om den aktuella modulen.
  • Nullish coalescing, en värdevalsoperatör för bättre hantering av ärenden som rör tillgång till tillgångar. Det är en syntaxfunktion för att förbättra arbetet med "ogiltiga" värden ( nulleller odefinierade).
  • Valfri kedja, en fastighetsåtkomst och funktionsanropsoperatör som kommer att kortsluta om värdet att komma åt / åberopa är ogiltigt. 

Den senaste uppdateringen av ECMAScript, ECMAScript 2019, innehöll funktioner som prototype.flatMap för kapslade matriser.