ECMAScript 2017
Mit ECMAScript 2017 wurde die achte Ausgabe des JavaScript Sprachstandards vom Technical Committee 39 (TC39) verabschiedet. Die neue Ausgabe umfasst zwei größere und vier kleinere Neuerungen.
Asynchrone Funktionen
Besonderes willkommen werden wohl die neuen asynchronen Funktionen sein, die es erleichtern lesbaren Code zu schreiben. Mit ihnen kommen die beiden Schlüsselwörter async
und await
. Eine kurze Einführung hierzu gibt Jake Archibald.
Shared Memory und Atomics
Über SharedArrayBuffer erhalten verschiedene Threads Zugriff auf einen gemeinsamen Speicherbereich. Das Atomics Objekt stellt atomare Operationen als statische Methoden zur Verfügung. Eine kurze Einführung findet sich hier.
Object.values und Object.entries
Die bereits vorhandenen Funktion Object.keys()
wurde mit Object.values()
und Object.entries()
komplettiert. Man erhält somit nicht nur einfachen Zugriff auf die Schlüssel der eigenen aufzählbaren Eigenschaften, sondern auch auf die Werte und auf Schlüssel/Wert-Paare.
const example = { foo: 'Bar', num: 123 }; Object.values(example); // ⇒ [ 'Bar', 123 ] Object.entries(example); // ⇒ [ [ 'foo', 'Bar' ], [ 'num', 123 ] ]
String-Padding
Endlich gibt es native Methoden zum Auffüllen von Strings. Diese lauten String.padStart()
und String.padEnd()
. Mit einem optionalen zweiten Parameter kann eine Zeichenkette angegeben werden, die statt dem standardmäßigem Leerzeichen, zum Auffüllen verwendet wird.
'foobar'.padStart(10, '.'); // ⇒ "....foobar" 'foobar'.padEnd(10, '123'); // ⇒ "foobar1231"
Object.getOwnPropertyDescriptors
Als Ergänzung zu Object.getOwnPropertyDescriptor()
gibt es nun die Methode Object.getOwnPropertyDescriptors()
, mit der man alle Eigenschaftsdeskriptoren eines Objektes geliefert bekommt.
Abschließende Kommas in Funktionsparameterlisten
Bei Funktionsparametern ist ein abschliessendes Komma nun sowohl bei der Definition als auch beim Aufruf erlaubt:
function fooBar( foo, bar, ) { … } fooBar( 'foo', 'bar', );
Grund für diese Erweiterung:
- Einfacher lesbare Diffs
- Besseres Handling von Änderungen in Versionskontrollsystemen
- Einfacheres Umordnen von Code
- Generierter Code kommt ohne extra Logik für das letzte Element aus