Was Sie über dieses Buch wissen müssen
Inhaltsverzeichnis
Bitte unterstützen Sie dieses Buch: kaufen Sie es (PDF, EPUB, MOBI) oder spenden Sie
(Werbung, bitte nicht blockieren.)

Was Sie über dieses Buch wissen müssen

Dieses Buch handelt von ECMAScript 6 (dessen offizieller Name ECMAScript 2015 ist), einer neuen Version von JavaScript.

Zielgruppe: JavaScript-Programmierer

Um dieses Buch zu verstehen, sollten Sie bereits JavaScript kennen. Wenn nicht: mein anderes Buch „Speaking JavaScript“ ist kostenlos online verfügbar und bringt Programmierern alles über JavaScript (bis einschließlich ECMAScript 5) bei.

Warum sollte ich dieses Buch lesen?

Wie man dieses Buch liest

Dieses Buch behandelt ES6 mit drei Detailstufen

Weitere Dinge, die Sie wissen sollten

Quellen dieses Buches

Ich begann mit dem Schreiben dieses Buches lange bevor es Implementierungen von ES6-Funktionen gab, was recht umfangreiche Recherchen erforderte. Wesentliche Quellen waren

Glossar

Strict Mode vs. Sloppy Mode

ECMAScript 5 führte Sprachmodi ein: Strict Mode macht JavaScript zu einer saubereren Sprache, indem seine Semantik geändert, mehr Prüfungen durchgeführt und mehr Ausnahmen ausgelöst werden. Konsultieren Sie Abschnitt „Strict Mode“ in „Speaking JavaScript“ für weitere Informationen. Der Legacy-/Standardmodus wird non-strict mode oder sloppy mode genannt.

Strict Mode wird über die folgende Zeile eingeschaltet (die in ECMAScript-Versionen vor ES5 keine Wirkung hat)

'use strict';

Wenn Sie diese Zeile an den Anfang einer Datei setzen, befindet sich der gesamte Code darin im Strict Mode. Wenn Sie diese Zeile zur ersten Zeile einer Funktion machen, befindet sich nur diese Funktion im Strict Mode.

Die Verwendung einer Direktive zum Einschalten von Strict Mode ist nicht sehr benutzerfreundlich und war einer der Gründe, warum Strict Mode in ES5 nicht annähernd so beliebt war, wie er sein sollte. ES6-Module und -Klassen befinden sich jedoch implizit im Strict Mode. Da die meisten ES6-Codes in Modulen leben werden, wird Strict Mode zum De-facto-Standard für ES6.

Protokoll

Der Begriff Protokoll hat in der Informatik verschiedene Bedeutungen. Im Kontext von Programmiersprachen und API-Design verwende ich ihn wie folgt

Ein Protokoll definiert Schnittstellen (Signaturen für Methoden und/oder Funktionen) und Regeln für deren Verwendung.

Die Idee ist, festzulegen, wie ein Dienst erbracht werden soll. Dann kann jeder den Dienst erbringen und jeder kann ihn anfordern, und es ist garantiert, dass sie gut zusammenarbeiten.

Beachten Sie, dass sich die hier gegebene Definition von der Betrachtung eines Protokolls als Schnittstelle (wie z. B. in Objective C) unterscheidet, da diese Definition Regeln enthält.

Empfänger (eines Methodenaufrufs)

Bei einem Methodenaufruf obj.m(···) ist obj der Empfänger des Methodenaufrufs und über this innerhalb der Methode zugänglich.

Signatur einer Funktion (oder einer Methode)

Die (Typen-)Signatur einer Funktion beschreibt, wie die Funktion aufgerufen wird, was ihre Eingaben und Ausgaben sind. Ich verwende in diesem Buch die von Microsoft TypeScript und Facebook Flow etablierte Syntax. Ein Beispiel für eine Signatur

parseInt(string : string, radix? : number) : number

Sie sehen, dass parseInt() einen String und eine Zahl erwartet und eine Zahl zurückgibt. Wenn der Typ eines Parameters klar ist, lasse ich die Typannotation oft weg.

Interne Slots

Die ES6-Sprachspezifikation verwendet interne Slots, um interne Daten zu speichern. In der Spezifikation werden interne Slots wie Eigenschaften behandelt, deren Namen in eckigen Klammern stehen

O.[[GetPrototypeOf]]()

Zwei Dinge unterscheiden sie von Eigenschaften

Wie genau interne Slots gespeichert werden, bleibt unbezeichnet. Einige existieren in tatsächlichen JavaScript-Implementierungen möglicherweise nicht einmal.

Bindings und Umgebungen

Die ECMAScript-Spezifikation verwendet eine Datenstruktur namens Umgebung, um die Variablen eines Scopes zu speichern. Eine Umgebung ist im Grunde ein Wörterbuch, das Variablennamen auf Werte abbildet. Ein Binding ist ein Eintrag in einer Umgebung, Speicherplatz für eine Variable.

Destruktive Operationen

Destruktive Operationen (Methoden, Funktionen) ändern ihre Parameter oder ihre Empfänger. Zum Beispiel modifiziert push() seinen Empfänger arr

> const arr = ['a', 'b'];
> arr.push('c')
3
> arr
[ 'a', 'b', 'c' ]

Im Gegensatz dazu erstellt concat() ein neues Array und verändert seinen Empfänger arr nicht

> const arr = ['a', 'b'];
> arr.concat(['c'])
[ 'a', 'b', 'c' ]
> arr
[ 'a', 'b' ]

Konventionen

Dokumentation von Klassen

Die API einer Klasse C wird normalerweise wie folgt dokumentiert

Großschreibung

Im Englischen schreibe ich JavaScript-Begriffe wie folgt groß

Demo-Code auf GitHub

Mehrere Repositories auf GitHub enthalten Code, der in diesem Buch gezeigt wird

Randspalten

Randspalten sind Textkästen, die mit Symbolen gekennzeichnet sind. Sie ergänzen den normalen Inhalt.

Fußnoten

Gelegentlich verweise ich über Fußnoten auf (öffentlich verfügbare) externe Materialien. Zwei Quellen werden mit einem Präfix in eckigen Klammern gekennzeichnet

Weiter: Vorwort