navios

Ihr Partner für’s Web

ECMAScript 2018 freigegeben

Die neunte Ausgabe des JavaScript Sprachstandards ECMAScript 2018 wurde vom Technical Committee 39 (TC39) nun offiziell freigegeben. Die folgenden neuen Features schafften es in den Standard:

Object Rest/Spread Properties

ECMAScript wird erweitert um Rest Properties für das Object Destructuring Assignment

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
// x ⇒ 1
// y ⇒ 2
// z ⇒ { a: 3, b: 4 }

und Spread Properties für Object Literale.

let n = { x, y, ...z };
// n ⇒ { x: 1, y: 2, a: 3, b: 4 }

Asynchrone Iteration

Asynchrone Iteratoren erweitern das bekannte Iterator-Interface, welches bereits in ECMAScript 2015 eingeführt wurde. Im Gegensatz zur bisherigen synchronen Variante liefert der Aufruf von next() hier ein Promise-Objekt zurück. Zur Iteration steht ein neues for-wait-of Statement zur Verfügung:

for await (const line of readLines(filePath)) {
    console.log(line);
}

Promise.prototype.finally

Die Implementierung von Promise wird mit finally abgeschlossen. Hiermit wird z. B. ermöglicht, Ressourcen aufzuräumen, wenn eine Promise erledigt ist. Beispiel:

fetch(myRequest)
    .then(result => {
        // ...
    })
    .catch(error => {
        // ...
    })
    .finally(() => {
        // Cleanup
    });

RegExp Erweiterungen

Vier Erweiterungen für reguläre Ausdrucke schafften es in den Standard.

s-Flag (dotAll/singleline)

Das aus anderen Sprachen bereits bekannte Singleline-Flag steht nun zur Verfügung:

/foo.bar/s.test('foo\nbar');
// ⇒ true

Named Capture Groups

Benannte Gruppen erhöhen die Lesbarkeit:

let re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>d{2})/u;
let result = re.exec('2015-01-02');
// result.groups.year  ⇒ '2015';
// result.groups.month ⇒ '01';
// result.groups.day   ⇒ '02';

Lookbehind Assertions

Lookbehind Assertions stehen nun auch zur Verfügung.

Unicode Property Escapes

Unicode Zeichenklassen werden jetzt auch unterstützt:

const regexGreekSymbol = /\p{Script=Greek}/u;
regexGreekSymbol.test('π');
// ⇒ true

Template Literals Revision

Tagged Template Literals wurden überarbeitet, hauptsächlich um mehr syntaktische Freiheiten zu haben.