ТОП просматриваемых книг сайта:
JavaScript für Ungeduldige. Cay Horstmann
Читать онлайн.Название JavaScript für Ungeduldige
Год выпуска 0
isbn 9783969100943
Автор произведения Cay Horstmann
Жанр Математика
Издательство Bookwire
Tab. 1–2 Maskierungssequenzen für Sonderzeichen
Leider gibt es bei der Verwendung von Unicode in JavaScript einen bösen Haken. Um die Feinheiten zu verstehen, müssen wir einen Blick auf die Geschichte von Unicode werfen. Vor der Erfindung von Unicode gab es verschiedene, nicht miteinander vereinbare Systeme zur Zeichenkodierung, wobei ein und dieselbe Bytefolge für Benutzer in Europa, Russland oder China ganz andere Bedeutungen haben konnte.
Unicode sollte diese Probleme lösen. Als man in den 80er Jahren mit dieser Vereinheitlichung begann, schien es so, als reiche ein 16-Bit-Code völlig aus, um sämtliche Zeichen in allen Sprachen der Welt zu kodieren und dabei noch Platz für zukünftige Erweiterungen zu lassen. 1991 wurde Unicode 1.0 veröffentlicht, worin knapp die Hälfte der verfügbaren 65.536 Codewerte belegt war. Als JavaScript und Java 1995 erschienen, nutzten sie die Unicode-Kodierung. In beiden Sprachen sind Strings Folgen von 16-Bit-Werten.
Im Laufe der Zeit aber geschah das Unvermeidliche: Der Umfang von Unicode überstieg den Vorrat von 65.536 Zeichen. Heutzutage nutzt Unicode 21 Bits, was nach gängiger Meinung nun wirklich ausreichen sollte. JavaScript aber ist bei den 16-Bit-Werten stecken geblieben.
Um zu erklären, wie dieses Problem gelöst wird, müssen wir uns ein bisschen mit dem technischen Hintergrund beschäftigen. Ein Unicode-Codepunkt ist ein 21-Bit-Wert, der mit einem Zeichen verknüpft wird. JavaScript nutzt die UTF-16-Kodierung, die alle Unicode-Codepunkte durch einen oder zwei 16-Bit-Werte oder Codeeinheiten darstellt. Für Zeichen bis \u{FFFF} wird jeweils eine Codeeinheit verwendet. Alle anderen Zeichen dagegen werden mit zwei Einheiten kodiert, die aus einem reservierten Bereich stammen und nicht zur Darstellung irgendwelcher anderer Zeichen genutzt werden. Beispielsweise wird \u{1F310} durch die Folge 0xD83C 0xDF10 kodiert. (Eine Beschreibung des Kodieralgorithmus finden Sie auf https://de.wikipedia.org/wiki/UTF-16.)
Mit den Einzelheiten der Kodierung müssen Sie sich nicht beschäftigen, aber wissen, dass einige Zeichen eine einzelne 16-Bit-Codeeinheit erfordern, andere dagegen zwei.
Beispielsweise hat der String 'Hello
Tipp
In Kapitel 2 werden Sie erfahren, wie Sie mit einer for-of-Schleife die einzelnen Codepunkte abrufen können.
Hinweis
Sie können in String-Literalen auch 16-Bit-Codeeinheiten angeben, müssen dabei aber die geschweiften Klammern weglassen: \uD83C\uDF10. Für Codeeinheiten bis \u{0xFF} können Sie die Hexmaskierung verwenden, also z. B. \xA0 statt \u{00A0]. Allerdings kann ich mir für beides keinen guten Grund vorstellen.
In Kapitel 6 lernen Sie die Methoden für die Arbeit mit Strings kennen.
Hinweis
In JavaScript gibt es auch Literale für reguläre Ausdrücke. Mehr darüber erfahren Sie in Kapitel 6.
1.11Template-Literale
Template-Literale sind Strings, die Ausdrücke enthalten und mehrere Zeilen umspannen können. Sie werden in Backticks (`...`) eingeschlossen:
let destination = 'world' // Regulärer String
let greeting = `Hello, ${destination.toUpperCase()}!` //Template-Literal
Die in ${...} eingebetteten Ausdrücke werden ausgewertet, bei Bedarf in einen String umgewandelt und dann in das Template eingefügt. Im vorigen Beispiel ergibt sich dadurch der folgende String:
Hello, WORLD!
Sie können auch weitere Template-Literale in dem ${...}-Ausdruck verschachteln:
greeting = `Hello, ${firstname.length > 0 ? `${firstname[0]}. ` : '' }
${lastname}`
Alle Zeilenumbrüche innerhalb des Template-Literals werden in den String aufgenommen. Betrachten Sie dazu das folgende Beispiel:
greeting = `<div>Hello</div>
<div>${destination}</div>
`
Hier wird greeting auf den String '<div>Hello</div>\n<div>World</div>\n' mit Zeilenumbrüchen hinter jeder Zeile gesetzt. (Für den resultierenden String werden die Windows-Zeilenende-Zeichen \r\n in das Unix-Zeilenende-Zeichen \n umgewandelt.)
Um