Название | JavaScript – Das Handbuch für die Praxis |
---|---|
Автор произведения | David Flanagan |
Жанр | Математика |
Серия | |
Издательство | Математика |
Год выпуска | 0 |
isbn | 9783960104926 |
as const export get null target void
async continue extends if of this while
await debugger false import return throw with
break default finally in set true yield
case delete for instanceof static try
catch do from let super typeof
class else function new switch var
JavaScript reserviert außerdem einige Wörter, die im Moment noch nicht offiziell Teil der Sprache sind, bei Bedarf aber in künftigen Versionen genutzt werden könnten.
enum implements interface package private protected public
Aus historischen Gründen sind arguments und eval unter bestimmten Umständen nicht als Identifier erlaubt – sie sollten am besten ganz vermieden werden.
2.5Unicode
JavaScript-Programme werden im Unicode-Zeichensatz geschrieben, und Sie können beliebige Unicode-Zeichen in Zeichenfolgen und Kommentaren verwenden. Aus Gründen der Portabilität und der einfachen Bearbeitung ist es üblich, in Identifiern lediglich ASCII-Buchstaben und -Ziffern zu verwenden. Das ist aber nur eine Programmierkonvention. Die Sprache erlaubt Unicode-Buchstaben, -Ziffern und -Ideogramme (aber keine Emojis) in Identifiern. Das bedeutet, dass man mathematische Symbole und Wörter aus nicht englischen Sprachen als Konstanten und Variablen verwenden kann:
const π = 3.14;
const sí = true;
2.5.1Unicode-Escape-Sequenzen
Es gibt Hard- und Software, die nicht in der Lage sind, alle Unicode-Zeichen anzuzeigen, als Eingabe entgegenzunehmen oder korrekt zu verarbeiten. Um Programmierer und Systeme zu unterstützen, die ältere Technologien verwenden, definiert JavaScript Escape-Sequenzen. Mit ihnen können Unicode-Zeichen mithilfe von ASCII-Zeichen geschrieben werden. Diese Unicode-Escape-Sequenzen beginnen mit den beiden Zeichen \u, gefolgt von entweder genau vier Hexadezimalziffern (unter Verwendung der Groß- oder Kleinbuchstaben A bis F) oder einer bis sechs Hexadezimalziffern in geschweiften Klammern. Unicode-Escape-Sequenzen dürfen in JavaScript-String-Literalen, Literalen für reguläre Ausdrücke und Identifiern (aber nicht in spracheigenen Schlüsselwörtern) vorkommen. Die Unicode-Escape-Sequenz für das Zeichen »é« ist beispielsweise \u00E9. Hier sind drei verschiedene Möglichkeiten, einen Variablennamen zu schreiben, der dieses Zeichen enthält:
let café = 1; // Definieren Sie eine Variable mit einem Unicode-Zeichen.
caf\u00e9 // => 1; Zugriff auf die Variable mit einer Escape-Sequenz.
caf\u{E9} // => 1; Eine andere Form der gleichen Escape-Sequenz.
Frühe Versionen von JavaScript unterstützten nur vierstellige Escape-Sequenzen. Die Version mit geschweiften Klammern wurde in ES6 eingeführt, um Unicode-Codepoints wie z.B. Emojis, die mehr als 16 Bit benötigen, besser zu unterstützen:
console.log("\u{1F600}"); // Gibt ein Smiley-Emoji aus.
Unicode-Escape-Sequenzen können auch in Kommentaren vorkommen. Dort werden sie aber einfach als ASCII-Zeichen behandelt (und nicht als Unicode), da Kommentare beim Ausführen des Codes ignoriert werden.
2.5.2Unicode-Normalisierung
Wenn Sie in Ihren JavaScript-Programmen Zeichen verwenden, die nicht zum ASCII-Standard gehören, müssen Sie sich bewusst sein, dass Unicode mehr als eine Art der Codierung desselben Zeichens erlaubt. Der aus einem Zeichen bestehende String »é« kann z.B. als einzelnes Unicode-Zeichen \u00E9 oder als reguläres ASCII-»e«, gefolgt von dem Zeichen \u0301, um den Accent aigu hinzuzufügen, dargestellt werden. In einem Texteditor werden beide Codierungen gleich aussehen. Dennoch verwenden sie unterschiedliche Binärcodierungen, und JavaScript erkennt diesen Unterschied, was zu sehr verwirrenden Problemen führen kann:
const café = 1; // Diese Konstante wird "caf\u{e9}" genannt.
const café = 2; // Diese Konstante heißt anders: "cafe\u{301}".
café // => 1: Diese Konstante hat einen bestimmten Wert.
café // => 2: Aber diese nicht unterscheidbare Konstante hat einen anderen Wert.
Der Unicode-Standard definiert die bevorzugte Codierung für alle Zeichen und legt ein Normalisierungsverfahren fest, um Text in eine kanonische Form umzuwandeln, die für Vergleiche geeignet ist. JavaScript geht davon aus, dass der Quellcode, den es interpretiert, bereits normalisiert wurde, und führt von sich aus keine Normalisierung durch. Wenn Sie planen, Unicode-Zeichen in Ihren JavaScript-Programmen zu verwenden, sollten Sie sicherstellen, dass Ihr Editor oder ein anderes Tool eine Unicode-Normalisierung Ihres Quellcodes durchführt. So können Sie verhindern, dass Sie am Ende unterschiedliche, aber visuell nicht unterscheidbare Identifier erhalten.
2.6Optionale Semikola
Wie viele andere Programmiersprachen verwendet auch JavaScript das Semikolon (;) zur Trennung von Anweisungen (siehe Kapitel 5). Das ist wichtig, um die Bedeutung Ihres Codes klarzustellen: Ohne Trennzeichen könnte das Ende einer Anweisung als Anfang der nächsten interpretiert werden oder umgekehrt. Normalerweise können Sie in JavaScript das Semikolon zwischen zwei Anweisungen weglassen, wenn diese Anweisungen in getrennten Zeilen stehen. (Am Ende eines Programms ist ebenfalls kein Semikolon vorgeschrieben. Das Gleiche gilt, wenn das folgende Token in einem Programm eine schließende geschweifte Klammer (}) ist.) Viele JavaScript-Programmierer (und ich im Code dieses Buchs) verwenden Semikola, um explizit das Ende von Anweisungen zu markieren, auch wenn es an diesen Stellen eigentlich nicht nötig ist. Bei einer anderen stilistischen Variante werden Semikola nach Möglichkeit weggelassen und nur in den wenigen Situationen verwendet, in denen sie tatsächlich vorgeschrieben sind. Für welche dieser Varianten Sie sich auch entscheiden – es gibt einige Auswirkungen optionaler Semikola, die Sie kennen sollten.
Betrachten Sie den folgenden Code. Da die beiden Anweisungen in zwei separaten Zeilen stehen, könnten Sie das erste Semikolon weglassen:
a = 3;
b = 4;
Schreibt man die Anweisungen jedoch folgendermaßen, ist das erste Semikolon unbedingt erforderlich:
a = 3; b = 4;
Beachten Sie bitte, dass JavaScript nicht jeden Zeilenumbruch als Semikolon behandelt: Das passiert normalerweise nur, wenn es den Code nicht parsen kann, ohne ein implizites Semikolon hinzuzufügen. Formeller ausgedrückt (und mit drei Ausnahmen, die etwas später beschrieben werden): JavaScript behandelt einen Zeilenumbruch als Semikolon, wenn das nächste Nicht-Leerzeichen nicht als Fortsetzung der aktuellen Anweisung interpretiert werden kann. Betrachten Sie diesen Code:
let a
a
=
3
console.log(a)