ECMAScript (Deutsch)
Die ECMAScript-Spezifikation ist eine standardisierte Spezifikation einer Skriptsprache, die von Brendan Eich von Netscape entwickelt wurde. zunächst mit dem Namen Mocha, dann LiveScript und schließlich JavaScript. Im Dezember 1995 gaben Sun Microsystems und Netscape JavaScript in einer Pressemitteilung bekannt. Im November 1996 kündigte Netscape ein Treffen der Ecma International Standards Organization an, um die Standardisierung von JavaScript voranzutreiben. Die erste Ausgabe von ECMA-262 wurde von der Ecma-Generalversammlung im Juni 1997 angenommen. Seitdem wurden mehrere Ausgaben des Sprachstandards veröffentlicht., Der Name „ECMAScript“ war ein Kompromiss zwischen den Organisationen, die an der Standardisierung der Sprache beteiligt waren, insbesondere Netscape und Microsoft, deren Streitigkeiten die frühen Standardsitzungen dominierten. Eich kommentierte, dass “ ECMAScript immer ein unerwünschter Handelsname war, der wie eine Hautkrankheit klingt.“ECMAScript wurde durch operative Semantik von der Stanford University und dem Department of Computing am Imperial College London für Sicherheitsanalyse und Standardisierung formalisiert.,
Sowohl JavaScript als auch JScript entsprechen der ECMAScript-Spezifikation und bieten gleichzeitig zusätzliche Funktionen, die in der Spezifikation nicht beschrieben sind.
VersionsEdit
Es sind elf Editionen von ECMA-262 veröffentlicht. Die Arbeiten an Version 11 des Standards wurden im Juni 2020 abgeschlossen.,
Ausgabe | Veröffentlichungsdatum | Name | Änderungen von der vorherigen Ausgabe | Editor | 1 | Juni 1997 | Erste Ausgabe | Guy L. Steele Jr.,998 | Redaktionelle Änderungen, um die Spezifikation vollständig mit dem internationalen Standard ISO/IEC 16262 in Einklang zu bringen | Mike Cowlishaw |
---|---|---|---|---|---|
3 | Dezember 1999 | Reguläre Ausdrücke hinzugefügt, bessere String-Behandlung, neue Steueranweisungen, Try/Catch-Ausnahmebehandlung, strengere Definition von Fehlern, Formatierung für numerische Ausgabe und andere Verbesserungen | Mike Cowlishaw | ||
4 | Aufgegeben (letzter Entwurf 30.Juni 2003) | Die vierte Auflage wurde aufgrund politischer Differenzen bezüglich der Sprachkomplexität aufgegeben., Viele Funktionen, die für die vierte Ausgabe vorgeschlagen wurden, wurden vollständig fallen gelassen; Einige wurden in die sechste Ausgabe aufgenommen. | |||
5 | Dezember 2009 | Fügt „strict mode“ hinzu, eine Teilmenge, die eine gründlichere Fehlerprüfung ermöglichen und fehleranfällige Konstrukte vermeiden soll. Klärt viele Unklarheiten in der Spezifikation der 3.Ausgabe und berücksichtigt das Verhalten realer Implementierungen, die sich konsistent von dieser Spezifikation unterschieden., Fügt einige neue Funktionen hinzu, z. B. Getter und Setter, Bibliotheksunterstützung für JSON und vollständigere Reflexion der Objekteigenschaften. | Pratap Lakshman, Allen Wirfs-Brock | ||
5.1 | Juni 2011 | Diese Ausgabe 5.1 des ECMAScript-Standards ist vollständig auf die dritte Ausgabe des internationalen Standards ISO/IEC 16262:2011 abgestimmt., | Siehe 9. Ausgabe-ECMAScript 2018 | Brian Terlson | |
10 | Juni 2019 | ECMAScript 2019 (ES2019) | Siehe 10.Ausgabe – ECMAScript 2019 | Brian Terlson, Bradley Farias, Jordan Harband | |
11 | Juni 2020 | ausgabe – ECMAScript 2020 | Jordan Harband, Kevin Smith |
Im Juni 2004 veröffentlichte Ecma International den ECMA-357-Standard, der eine Erweiterung von ECMAScript definiert, die als ECMAScript for XML (E4X) bekannt ist., Ecma definierte auch ein „kompaktes Profil“ für ECMAScript – bekannt als ES-CP oder ECMA 327–, das für ressourcenbeschränkte Geräte entwickelt wurde und 2015 zurückgezogen wurde.
4. Ausgabe (aufgegeben)Bearbeiten
Die vorgeschlagene vierte Ausgabe von ECMA-262 (ECMAScript 4 oder ES4) wäre die erste große Aktualisierung von ECMAScript seit der Veröffentlichung der dritten Ausgabe im Jahr 1999 gewesen. Die Spezifikation (zusammen mit einer Referenzimplementierung) war ursprünglich für die Fertigstellung bis Oktober 2008 vorgesehen. Der erste Entwurf stammt vom Februar 1999., Ein Überblick über die Sprache wurde von der Arbeitsgruppe am 23.
Bis August 2008 wurde der ECMAScript 4th Edition-Vorschlag in ein Projekt mit dem Codenamen ECMAScript Harmony zurückskaliert. Zu den Funktionen, die zur damaligen Zeit für Harmony diskutiert wurden, gehörten:
- Klassen,
- ein Modulsystem,
- optionale Typanmerkungen und statische Typisierung, wahrscheinlich unter Verwendung eines Strukturtypsystems,
- Generatoren und Iteratoren,
- Destrukturierungszuweisung und
- algebraische Datentypen.,
Die Absicht dieser Funktionen bestand zum Teil darin, die Programmierung im Großen besser zu unterstützen und einen Teil der Fähigkeit des Skripts zu opfern, dynamisch zu sein, um die Leistung zu verbessern. Zum Beispiel hat Tamarin-die virtuelle Maschine für ActionScript, entwickelt und Open-Source von Adobe-Just-in-Time Compilation (JIT) Unterstützung für bestimmte Klassen von Skripten.
Zusätzlich zur Einführung neuer Funktionen wurden einige ES3-Fehler vorgeschlagen, die in Edition 4 behoben werden sollten. Diese Korrekturen und andere sowie die Unterstützung für die JSON-Codierung / – Decodierung wurden in die ECMAScript-Spezifikation der 5.Ausgabe gefaltet.,
Die Arbeiten an der Edition 4 begannen nach Abschluss der Spezifikation ES-CP (Compact Profile) und dauerten ungefähr 18 Monate, wobei langsame Fortschritte erzielt wurden, um die Theorie der JavaScript 2-Spezifikation von Netscape mit der Implementierungserfahrung von Microsoft in Einklang zu bringen JScript. NET. Nach einiger Zeit verlagerte sich der Fokus auf den ECMAScript for XML (E4X) – Standard. Das Update war nicht unumstritten. Ende 2007 wurde eine Debatte zwischen Eich, dem späteren CTO der Mozilla Foundation, und Chris Wilson, Microsofts Plattformarchitekt für Internet Explorer, in einer Reihe von Blogs öffentlich., Wilson warnte davor, dass das Update aufgrund der vorgeschlagenen Änderungen an ECMAScript in mancher Hinsicht mit früheren Versionen der Sprache abwärtskompatibel war und dass Stakeholder, die sich den Änderungen widersetzten, „aus dem Blickfeld gerieten“. Eich antwortete mit der Feststellung, dass Wilson „Lügen in Blogs zu wiederholen schien“ und bestritt, dass es Versuche gab, Dissens zu unterdrücken, und forderte Kritiker auf, spezifische Beispiele für Inkompatibilität zu nennen., Er wies darauf hin, dass Microsoft Silverlight und Adobe AIR jeweils auf C# und ActionScript 3 angewiesen sind, die beide größer und komplexer als ECMAScript Edition 3 sind.
5. EditionEdit
Yahoo, Microsoft, Google und anderen 4th edition Abweichler bildeten Ihre eigenen Unterausschuss zu design eine weniger ehrgeizige Aktualisierung von ECMAScript 3, provisorisch benannt ECMAScript 3.1. Diese Ausgabe würde sich auf Sicherheits-und Bibliotheksupdates konzentrieren, wobei der Schwerpunkt auf Kompatibilität liegt. Nach dem oben genannten öffentlichen Sparring, dem ECMAScript 3.,Die Teams von 1 und ECMAScript 4 einigten sich auf einen Kompromiss: Die beiden Editionen würden parallel mit Koordination zwischen den Teams bearbeitet, um sicherzustellen, dass ECMAScript 3.1 sowohl in Semantik als auch in Syntax eine strikte Untergruppe von ECMAScript 4 bleibt.
Die unterschiedlichen Philosophien in jedem Team führten jedoch zu wiederholten Brüchen der Teilmengenregel, und es blieb zweifelhaft, dass die ECMAScript 4-Abweichler ECMAScript 4 in Zukunft jemals unterstützen oder implementieren würden., Nach mehr als einem Jahr seit der Meinungsverschiedenheit über die Zukunft von ECMAScript innerhalb des Ecma Technical Committee 39 haben die beiden Teams im Juli 2008 einen neuen Kompromiss erzielt: Brendan Eich kündigte an, dass Ecma TC39 die Arbeit auf das ECMAScript 3.1-Projekt (später umbenannt in ECMAScript, 5th Edition) konzentrieren werde) mit voller Zusammenarbeit aller Parteien, und die Anbieter würden bis Anfang 2009 mindestens zwei interoperable Implementierungen anstreben. Im April 2009 veröffentlichte Ecma TC39 den „endgültigen“ Entwurf der 5. Ausgabe und gab bekannt, dass die Tests interoperabler Implementierungen voraussichtlich Mitte Juli abgeschlossen sein werden., Am 3. Dezember 2009 wurde ECMA-262 5th Edition veröffentlicht.
6. Ausgabe-ECMAScript 2015Edit
Die 6.Ausgabe, die zunächst als ECMAScript 6 (ES6) bekannt war und später in ECMAScript 2015 umbenannt wurde, wurde im Juni 2015 abgeschlossen. Dieses Update fügt bedeutende neue Syntax für das Schreiben komplexer Anwendungen, einschließlich Klassendeklarationen (class Foo { ... }
), ES6-Module wie import * as moduleName from "..."; export const Foo
, aber definiert sie semantisch in den gleichen Begriffen wie ECMAScript 5 strict mode., Weitere neue Funktionen sind Iteratoren und for...of
Schleifen, Generatoren im Python-Stil, Pfeilfunktionsausdruck (() => {...}
), let
Schlüsselwort für lokale Deklarationen, const
Schlüsselwort für konstante lokale Deklarationen, Binärdaten, typisierte Arrays, neue Sammlungen (maps, sets und WeakMap), Versprechen, Anzahl und mathematische Verbesserungen, reflexion, Proxies (Metaprogrammierung für virtuelle Objekte und Wrapper) und Template-Literale für Strings. Die komplette Liste ist umfangreich., Als erste“ ECMAScript Harmony “ – Spezifikation wird sie auch als „ES6 Harmony“ bezeichnet.“
7th Edition-ECMAScript 2016Edit
Die 7th Edition, offiziell bekannt als ECMAScript 2016, wurde im Juni 2016 abgeschlossen. Seine Eigenschaften umfassen Block-Scoping von Variablen und Funktionen, Destrukturierungsmuster (von Variablen), richtige Tail-Aufrufe, Exponentiationsoperator **
für Zahlen, await
, async
Schlüsselwörter für asynchrone Programmierung und die Array.Prototyp.includes
– Funktion.,
Der Exponentiationsoperator entspricht Math.pow
, bietet jedoch eine einfachere Syntax, die Sprachen wie Python, F#, Perl und Ruby ähnelt.async
/await
wurde als eine einfachere Möglichkeit begrüßt, Versprechungen zu verwenden und asynchronen Code zu entwickeln.
8. Auflage-ECMAScript 2017Edit
Die 8.Auflage, offiziell als ECMAScript 2017 bekannt, wurde im Juni 2017 abgeschlossen. Zu den Funktionen gehört das - Objekt.Werte
, Objekt.,Einträge
und Objekt.getOwnPropertyDescriptors
Funktionen zur einfachen Manipulation von Objekten, async/await
Konstruktionen, die Generatoren und Versprechungen verwenden, sowie zusätzliche Funktionen für Parallelität und Atomics.
9. Auflage-ECMAScript 2018Edit
Die 9.Auflage, offiziell als ECMAScript 2018 bekannt, wurde im Juni 2018 abgeschlossen. Zu den neuen Funktionen gehören Rest – / Spread-Operatoren für Objektliterale (drei Punkte: ...identifier
), asynchrone Iteration, Promise.prototype.finally
und Ergänzungen zu RegExp.,
Der Spread-Operator ermöglicht das einfache Kopieren von Objekteigenschaften, wie unten gezeigt.
10th Edition-ECMAScript 2019Edit
Die 10th Edition, offiziell bekannt als ECMAScript 2019, wurde im Juni 2019 veröffentlicht. Hinzugefügt Features sind, sind aber nicht beschränkt auf, Array.prototype.flat
, Array.prototype.flatMap
, Änderungen an Array.sort
und Object.fromEntries
.
Array.sort
ist jetzt garantiert stabil, was bedeutet, dass Elemente mit derselben Sortierpriorität in derselben Reihenfolge im sortierten Array angezeigt werden., Array.prototype.flat(depth=1)
flacht ein Array auf eine bestimmte Tiefe ab, was bedeutet, dass alle Subarray-Elemente (bis zur angegebenen Tiefe) rekursiv verkettet werden.Ausgabe-ECMAScript 2020Edit
Die 11th Edition, offiziell bekannt als ECMAScript 2020, wurde im Juni 2020 veröffentlicht. Zusätzlich zu neuen Funktionen enthält diese Version einen primitiven Typ BigInt
für Ganzzahlen beliebiger Größe, den Null-koaleszierenden Operator und das globalThis-Objekt.,
BigInts werden entweder mit dem BigInt
Konstruktor oder mit der Syntax 10n
erstellt, wobei „n“ nach dem Zahlenliteral platziert wird. BigInts ermöglichen die Darstellung und Manipulation von Ganzzahlen jenseits der - Nummer.MAX_SAFE_INTEGER
, während Zahlen durch einen 64-Bit-IEEE 754-Wert mit doppelter Genauigkeit dargestellt werden., Die integrierten Funktionen in Math
sind nicht mit BigInts kompatibel; Die Exponentiation von BigInts muss beispielsweise mit dem Operator **
anstelle von Math erfolgen.pow
.
Der Null-koaleszierende Operator ??
, gibt seinen rechten Operanden zurück, wenn seine linke Seite null
oder undefined
., Dies steht im Gegensatz zum Operator ||
, der für alle Beispiele „string“ zurückgibt.
false ?? "string" // -> falseNaN ?? "string" // -> NaNundefined ?? "string" // -> "string"
Mit der optionalen Verkettung können Sie auf die verschachtelten Knoten in einem Objekt zugreifen, ohne auf jeder Ebene ein UND überprüfen zu müssen.
Ein Beispiel ist const postleitzahl = person?.adresse?.zipcode
. Wenn eine der Eigenschaften nicht vorhanden ist, ist Postleitzahl
undefined
.
ES.NextEdit
ES.,Next ist ein dynamischer Name, der sich auf die nächste Version zum Zeitpunkt des Schreibens bezieht. ES.Als nächstes sind fertige Vorschläge (auch bekannt als „Vorschläge der Stufe 4“) aufgeführt, die unter fertiger Vorschlag aufgeführt sind und nicht Teil einer ratifizierten Spezifikation sind. Das Sprachkomitee folgt einem „lebenden Spec“ – Modell, daher sind diese Änderungen Teil des Standards, und die Ratifizierung ist eine Formalität.