V8 V8: die Quadratur der JavaScript-Engine

Version 8.0 der JavaScript-Engine V8 bringt die geplanten JavaScript-Features Optional Chaining und den Nullish-Coalescing-Operator.

In Pocket speichern vorlesen Druckansicht 17 Kommentare lesen
JavaScript: V8 V8, die Quadratur der JavaScript-Engine
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Google feiert kurz vor Weihnachten die Veröffentlichung von Version 8.0 der JavaScript-Engine V8, die das Team als V8 V8 bezeichnet. Neben einigen Performance-Verbesserungen und komprimierten 64-Bit-Pointern bringt die Open-Source-Engine zwei Features mit, die in JavaScript noch als experimentell gekennzeichnet sind: Optional Chaining und den Nullish-Coalescence-Operator.

Der Speicherbedarf ist dank einer neu eingeführten Kompression für Pointer geringer, bei der die Engine 64-Bit-Pointer nicht vollständig speichert und dafür doppelt so viel Speicher wie für 32-Bit-Architekturen benötigen würde. Stattdessen verwaltet sie lediglich die eindeutigen unteren Bits und synthetisiert daraus die oberen. Damit spart V8 laut Google 40 Prozent des Heap-Speicherbedarfs.

Sowohl der Nullish-Coalescing-Operator als auch das Optional Chaining stehen weit oben auf der Wunschliste der JavaScript-Entwickler. Beide Features sind derzeit als experimentell gekennzeichnet und sollen künftig Bestandteil von ECMAScript werden. Microsoft hatte beide Anfang November in TypeScript 3.7 aufgenommen.

Die zugehörige Syntax ist dieselbe wie in TypeScript: Ein Fragezeichen nimmt innerhalb einer verketteten Anweisung eine null-Prüfung für den Wert vor dem ? vor. So ersetzt folgender Test aus dem V8-Blog

const nameLength = db?.user?.name?.length

die umständlichere und weniger übersichtliche Prüfung

let nameLength;
if (db && db.user && db.user.name)
nameLength = db.user.name.length;

Erwähnenswert ist, dass die Prüfung sich nur auf den Wert vor dem ? bezieht. Sollte bei folgender Zeile

const nameLength = db?.user.name.length;

user oder name nicht definiert sein, führt sie zu einer Fehlermeldung.

Der Nullish-Coalescing-Operator befindet sich derzeit in der dritten und damit vorletzten Stufe (Candidate Stage) beim TC39-Komitee zur Aufnahme in ECMAScript. In anderen Programmiersprachen heißt der Binäroperator auch Null Coalescing und existiert in unterschiedlichen Schreibweisen. Für JavaScript ist ebenso wie in TypeScript ein doppeltes Fragezeichen dafür vorgesehen. Der Operator ersetzt undefinierte Werte durch einen Standardwert. Folgende Codezeile

const x = foo ?? bar;

weist der Variable x den Wert von foo zu, wenn er weder null noch undefined ist. Ansonsten erhält x den Wert von bar.

Weitere Details zu V8 V8 lassen sich dem zugehörigen Blogbeitrag entnehmen. Wie üblich hat das Release der JavaScript-Engine Beta-Status, bis die zugehörige Chrome-Version erscheint. Eine Anleitung, wie Entwickler auf das Git-Repository zugreifen können, findet sich in der V8-Dokumentation. Außerdem ist die aktuelle Engine in der Beta zu Chrome 80 enthalten, die Google über den Chrome-Beta-Channel bereitstellt. (rme)