Willkommen JavaScript 2.0

JavaScript dominiert das Web – und ECMAScript, der Kern der Sprache wird erwachsen. Die neue Spezifikation (ES6 bzw. JS2), die Mitte dieses Jahres erwartet wird, bringt zahlreiche Neuerungen mit sich, die man schon heute ausprobieren kann. Firefox bringt momentan die beste Unterstützung mit, aber auch Polyfills durch sog. Transpiler wie Google Traceur sind möglich. Es folgt eine kurze Übersicht der neuen Features von ES6.


Das neue Schlüsselwort let macht vieles besser als var: So verhält sich das Scoping nun genau wie in anderen Sprachen (C/C++, Java), weshalb nun auch if-Blöcke einen eigenen Geltungsbereich haben. Auch das Hoisting, also das Vorziehen von Variablendeklarationen (nicht Wertzuweisungen) innerhalb des jeweiligen Geltungsbereiches wird repariert:

console.log(x);
var x = 'foo'; 
// undefined

console.log(y);
let y = 'bar';
// not initialized

Die Zahl der weiteren Neuerungen ist lang: Konstanten (const), Default-Werte für Funktionen (function pow(a,b=2) { return Math.pow(a,b); }), eine neuen Schreibweise für Funktionen (let pow = (a,b=2) => Math.pow(a,b);), eine Vielzahl neuer Funktionen (repeat(), contains(), startsWith(), find(), findIndex()), die neuen Schleifenkonstruktion for ... of.

Auch die neuen Datentypen Set, Map, Proxy und Symbol, das Importieren von (Teilen anderer) JavaScript-Dateien mit import und eine neue intuitive Syntax für Klassen und Vererbungen sind zu nennen. Oft sind es aber auch kleine aber lang erwartete Dinge wie der Möglichkeit von Zeilenumbrüchen in String-Literalen (man beachte die speziellen Anführungszeichen):

`foo

bar`

JavaScript ist schon lange weit mehr als ein Hilfsmittel für kleine Webseiten-Tricks – es entstehen mächtige, performante Webapplikationen, die ihren Desktop-Pendants in nichts nach stehen. Mit der großen Menge an hilfreichen Neuerungen und der schon heute vorhandenen Unterstützung von ES6 macht die Programmierung doppelt Spaß.

Wer wollte nicht schon immer mit Hilfe der neuen Konstante Number.EPSILON, deren Wert die Differenz zwischen 1 und dem nächsthöheren Gleitkommawert trägt, die Gleichheit zweier Zahlen prüfen?

let cmp = (a,b) => Math.abs(a-b) 
Zurück