Einführung

ECMAScript 6, auch bekannt als ECMAScript 2015, ist die neueste Version des ECMAScript-Standards. ES6 ist ein bedeutendes Update der Sprache, und das erste Update der Sprache seit ES5 wurde 2009 standardisiert. Die Implementierung dieser Funktionen in großen JavaScript-Engines ist jetzt im Gange.

Die vollständige Spezifikation der ECMAScript 6-Sprache finden Sie im ES6-Standard.,

ES6 enthält die folgenden neuen Funktionen:

  • Pfeile
  • Klassen
  • erweiterte Objektliterale
  • Vorlagenzeichenfolgen
  • Destrukturierung
  • default + rest + spread
  • let + const
  • Iteratoren + for..,
  • Generatoren
  • unicode
  • Module
  • Modullader
  • map + set + weakmap + weakset
  • proxies
  • symbole
  • unterklassifizierbare Built-Ins
  • Versprechen
  • math + number + string + array + object APIs
  • binäre und oktale Literale
  • reflect api
  • tail calls

ECMAScript 6 Features

Arrows

Arrows are a function shorthand using the => syntax. Sie ähneln syntaktisch der zugehörigen Funktion in C#, Java 8 und CoffeeScript., Sie unterstützen sowohl Anweisungsblockkörper als auch Ausdruckskörper, die den Wert des Ausdrucks zurückgeben. Im Gegensatz zu Funktionen teilen Pfeile das gleiche lexikalische this wie ihr umgebender Code.

Weitere Informationen: MDN-Pfeilfunktionen

Klassen

ES6-Klassen sind ein einfacher Zucker über das prototypbasierte OO-Muster. Ein einziges praktisches deklaratives Formular erleichtert die Verwendung von Klassenmustern und fördert die Interoperabilität. Klassen unterstützen prototypenbasierte Vererbung, Superaufrufe, Instanzmethoden und statische Methoden und Konstruktoren.,

Weitere Informationen: MDN-Klassen

Erweiterte Objektliterale

Objektliterale werden erweitert, um das Festlegen des Prototyps bei der Konstruktion, die Abkürzung für foo: foo – Zuweisungen, das Definieren von Methoden, das Tätigen von Superaufrufen und das Berechnen von Eigenschaftsnamen mit Ausdrücken zu unterstützen. Zusammen bringen diese auch Objektliterale und Klassendeklarationen näher zusammen und lassen objektbasiertes Design von einigen der gleichen Annehmlichkeiten profitieren.,

Weitere Informationen: MDN-Grammatik und-typen: Objektliterale

Vorlagenzeichenfolgen

Vorlagenzeichenfolgen bieten syntaktischen Zucker zum Erstellen von Zeichenfolgen. Dies ähnelt den Zeichenfolgeninterpolationsfunktionen in Perl, Python und mehr. Optional kann ein Tag hinzugefügt werden, um die Anpassung der Zeichenfolgenkonstruktion zu ermöglichen, um Injektionsangriffe zu vermeiden oder Datenstrukturen höherer Ebene aus Zeichenfolgeninhalten zu erstellen.

Weitere Informationen: MDN-Vorlagenzeichenfolgen

Destructuring

Destructuring ermöglicht die Bindung mithilfe des Mustervergleichs mit Unterstützung für übereinstimmende Arrays und Objekte., Destructuring ist fail-weich, ähnlich wie standard-Objekt-lookup foo produzieren undefined Werte, wenn nicht gefunden.

Mehr Infos: MDN Destructuring assignment

Standard + Rest + Verbreitung

Angerufene-bewertet die Standardwerte der parameter. Verwandeln Sie ein Array in aufeinanderfolgende Argumente in einem Funktionsaufruf. Binden Sie nachfolgende Parameter an ein Array. Rest ersetzt die Notwendigkeit von arguments und adressiert häufige Fälle direkter.,

function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y;}f(3) == 15
function f(x, ...y) { // y is an Array return x * y.length;}f(3, "hello", true) == 6
function f(x, y, z) { return x + y + z;}// Pass each elem of array as argumentf(...) == 6

More MDN info: Default parameters, Rest parameters, Spread Operator

Let + Const

Block-scoped binding constructs. let is the new var. const is single-assignment. Static restrictions prevent use before assignment.

function f() { { let x; { // okay, block scoped name const x = "sneaky"; // error, const x = "foo"; } // error, already declared in block let x = "inner"; }}

More MDN info: let statement, const statement

Iterators + For..,Von

Iterator-Objekte ermöglichen benutzerdefinierte iteration wie CLR IEnumerable-oder Java Iterierbar. Verallgemeinern Sie for..in zu einer benutzerdefinierten iteratorbasierten Iteration mit for..of. Sie müssen kein Array realisieren und faule Entwurfsmuster wie LINQ aktivieren.

Die Iteration basiert auf diesen duck-typisierten Schnittstellen (nur mit TypeScript – Typsyntax für Exposition):

Weitere Informationen: MDN für…von

Generatoren

Generatoren vereinfachen die Iteratorerstellung mit function* und yield., Eine als function * deklarierte Funktion gibt eine Generatorinstanz zurück. Generatoren sind Untertypen von Iteratoren, die zusätzliche next und throw. Diese ermöglichen es Werten, zurück in den Generator zu fließen, daher ist yield ein Ausdrucksformular, das einen Wert zurückgibt (oder wirft).

Hinweis: Kann auch verwendet werden, um ‚await‘-ähnliche asynchrone Programmierung zu aktivieren, siehe auch ES7 await Vorschlag.,

Die Generatorschnittstelle ist (nur mit TypeScript-Typsyntax für Exposition):

interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}

Weitere Informationen: MDN-Iterationsprotokolle

Unicode

Nicht unterbrechende Ergänzungen zur Unterstützung des vollständigen Unicode, einschließlich neuer Unicode-Literalform in Strings und neuer RegExp u Modus zur Behandlung von Codepunkten sowie neuer RegExp u

Weitere Informationen: MDN RegExp.Prototyp.,unicode

Module

Unterstützung auf Sprachebene für Module zur Komponentendefinition. Kodifiziert Muster von gängigen JavaScript-Modulladern (AMD, CommonJS). Laufzeitverhalten, das von einem hostdefinierten Standardlader definiert wird. Implizit asynchrones Modell – Kein Code wird ausgeführt, bis die angeforderten Module verfügbar und verarbeitet sind.,v>

Einige zusätzliche Funktionen umfassen export default und export *:

// lib/mathplusplus.jsexport * from "lib/math";export var e = 2.71828182846;export default function(x) { return Math.log(x);}
// app.jsimport ln, {pi, e} from "lib/mathplusplus";alert("2π = " + ln(e)*pi*2);

Weitere MDN-Informationen: Importanweisung, Exportanweisung

Modullader unterstützung für h3>

Modullader:

  • Dynamisches Laden
  • Zustandsisolierung
  • Globale Namespace-Isolation
  • Kompilierungs-Hooks
  • Verschachtelte Virtualisierung

Der Standard-Modullader kann konfiguriert werden, und neue Loader können erstellt werden, um Code in isolierten oder eingeschränkten Kontexten auszuwerten und zu laden.,

Map + Set + WeakMap + WeakSet

Effiziente Datenstrukturen für die gängigen algorithmen. WeakMaps bietet leakfreie Objektschlüssel und Beistelltische.

Weitere MDN-Informationen: Map, Set, WeakMap, WeakSet

Proxies

Proxies ermöglichen die Erstellung von Objekten mit dem gesamten Spektrum der für Hostobjekte verfügbaren Verhaltensweisen. Kann zum Abfangen, Objektvirtualisierung, Protokollieren/Profilieren usw. verwendet werden.

Für alle Metaoperationen auf Laufzeitebene stehen Traps zur Verfügung:

Weitere Informationen: MDN Proxy

Symbole

Symbole aktivieren die Zugriffskontrolle für den Objektstatus., Mit Symbolen können Eigenschaften entweder mit string (wie in ES5) oder symboleingegeben werden. Symbole sind ein neuer primitiver Typ. Optional description parameter Debuggen verwendet, ist aber nicht Teil der Identität. Symbole sind eindeutig (wie gensym), aber nicht privat, da sie über Reflexionsfunktionen wie Object.getOwnPropertySymbolsverfügbar gemacht werden.

Weitere Informationen: MDN Symbol

Subclassable Built-Ins

In ES6 können Built-Ins wie Array, Date und DOM Elements unterklassifiziert werden.,

Objektkonstruktion für eine Funktion mit dem Namen Ctor verwendet jetzt zwei Phasen (beide virtuell ausgelöst):

  • Rufen Sie Ctor auf, um das Objekt zuzuweisen, und installieren Sie ein spezielles Verhalten
  • Rufen Sie den Konstruktor für eine neue Instanz auf, um

Die bekannte @@create Symbol ist über Symbol.createverfügbar. Built-Ins setzen jetzt ihre @@create explizit frei.,

Math + Nummer + String + Array + – Objekt-APIs

Viele neue Bibliothek Ergänzungen, einschließlich der Kern-Mathematik-Bibliotheken, Array conversion-Helfer, Helfer String und Object.zuweisen zum Kopieren.

Weitere MDN-Informationen: Zahl, Mathematik, Array.aus, Array.der, Array.Prototyp.copyWithin, Objekt.weisen Sie

Binäre und oktale Literale zu

Für binäre (b) und oktale (o) werden zwei neue numerische Literalformen hinzugefügt.

0b111110111 === 503 // true0o767 === 503 // true

Verspricht

Versprechen eine Bibliothek für die asynchrone Programmierung., Versprechen sind eine erstklassige Darstellung eines Werts, der in Zukunft verfügbar gemacht werden kann. Versprechen werden in vielen vorhandenen JavaScript-Bibliotheken verwendet.

Weitere Informationen: MDN Promise

Reflect API

Full reflection API, die die Metaoperationen auf Laufzeitebene für Objekte verfügbar macht. Dies ist effektiv die Umkehrung der Proxy-API und ermöglicht Anrufe, die denselben Metaoperationen wie die Proxy-Traps entsprechen. Besonders nützlich für die Implementierung von Proxies.,

// No sample yet

Weitere Informationen: MDN Reflect

Tail Calls

Aufrufe in Tail-Position wachsen den Stapel garantiert nicht unbegrenzt. Macht rekursive Algorithmen angesichts unbegrenzter Eingaben sicher.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.