navios

Ihr Partner für’s Web

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