ECMAScript 2020-Spezifikation für JavaScript genehmigt

ECMAScript 2020, die spätere Version der offiziellen Spezifikation, die JavaScript zugrunde liegt, wurde am 16. Juni von ECMA International und dem technischen Komitee der ECMA, das die Spezifikation überwacht, offiziell genehmigt. 

ECMAScript 2020 bietet mehrere Funktionen, die von einer neuen Funktion import() zum Laden von Modulen bis zu einem neuen  BigInt Typ für das Arbeiten mit Ganzzahlen mit beliebiger Genauigkeit reichen  . 

Zu den durch ECMAScript 2020 eingeführten spezifischen Funktionen gehören:

  • Eine "funktionsähnliche" import()Syntax zum Laden von Modulen zum asynchronen Importieren von Modulen mit einem dynamischen Bezeichner. Der Vorschlag fügt eine import(specifier)syntaktische Form hinzu, die in vielerlei Hinsicht wie eine Funktion wirkt. Es gibt ein Versprechen für das Modul-Namespace-Objekt des angeforderten Moduls zurück, das nach dem Abrufen, Instanziieren und Auswerten der Abhängigkeiten eines Moduls zusammen mit dem Modul selbst erstellt wurde. Das  specifierwird genauso interpretiert wie in einer importErklärung. Während specifieres sich um eine Zeichenfolge handelt, handelt es sich nicht unbedingt um ein Zeichenfolgenliteral. Somit import(`./language-packs/${navigator.language}.js`)funktioniert Code wie . Dies war mit den üblichen importErklärungen nicht möglich . Mit dem Plan,import() Es wird vorgeschlagen, sowohl in Modulen als auch in Skripten zu arbeiten, um Skriptcode einen einfachen asynchronen Einstiegspunkt in die Modulwelt zu ermöglichen und die Ausführung von Modulcode zu ermöglichen.
  • BigInt,Ein neues Zahlenprimitiv für die Arbeit mit Ganzzahlen mit beliebiger Genauigkeit. BigIntkann Zahlen darstellen, die größer als zwei nach der 53. Potenz sind, die größte Zahl, die JavaScript zuverlässig mit dem NumberGrundelement darstellen kann. A BigIntwird durch Anhängen nan das Ende der Ganzzahl oder durch Aufrufen des Konstruktors erstellt.
  • Die matchAllMethode für Zeichenfolgen, um einen Iterator für alle übereinstimmenden Objekte zu erstellen, die von einem globalen regulären Ausdruck generiert werden. Der Grund für diesen Vorschlag ist, dass der Entwickler, wenn ein Entwickler eine Zeichenfolge und entweder einen klebrigen oder einen globalen regulären Ausdruck mit mehreren Erfassungsgruppen hat, möglicherweise alle Übereinstimmungen durchlaufen möchte, für die es derzeit mehrere Optionen gibt, jedoch mit Einschränkungen. String#matchAll Behebt Probleme, indem Zugriff auf alle Erfassungsgruppen gewährt wird und das betreffende Objekt mit regulären Ausdrücken nicht sichtbar mutiert wird.
  • Promise.allSettled, ein neuer Promise-Kombinator, der nicht kurzschließt. Dies gibt ein Versprechen zurück, das mit einer Reihe von Versprechen-Status-Schnappschüssen erfüllt wird, jedoch erst, nachdem die ursprünglichen Versprechen erfüllt wurden, dh entweder erfüllt oder abgelehnt wurden.
  • globalThisDies bietet eine universelle Möglichkeit, auf den globalen thisWert zuzugreifen .
  • Eine dedizierte export * as ns from ‘module’Syntax zur Verwendung in Modulen.
  • Erhöhte Standardisierung der for-inAufzählungsreihenfolge, teilweise Angabe der Aufzählungsreihenfolge in JavaScript.
  • import.meta,Ein vom Host ausgefülltes Objekt in Modulen, das Kontextinformationen enthalten kann. Dies dient als JavaScript-Metaproperty, die hostspezifische Metadaten zum aktuellen Modul enthält.
  • Nullish Coalescing, ein Operator zur Wertauswahl zur besseren Behandlung von Fällen mit Eigenschaftszugriffen. Es ist eine Syntaxfunktion, um die Arbeit mit "nullish" -Werten ( nulloder undefinierten) zu verbessern .
  • Optionale Verkettung, ein Operator für den Zugriff auf Eigenschaften und den Funktionsaufruf, der kurzschließt, wenn der Wert für den Zugriff / Aufruf null ist. 

Das letzte Update von ECMAScript, ECMAScript 2019, enthielt Funktionen, z. B. prototype.flatMap für verschachtelte Arrays.