JavaScript – Das Handbuch für die Praxis. David Flanagan

Читать онлайн.
Название JavaScript – Das Handbuch für die Praxis
Автор произведения David Flanagan
Жанр Математика
Серия
Издательство Математика
Год выпуска 0
isbn 9783960104926



Скачать книгу

Operanden zu benutzen.

      Vergleichsoperatoren hingegen funktionieren mit gemischten numerischen Typen (siehe aber 3.9.1 wegen des Unterschieds zwischen == und ===):

      1 < 2n // => true

      2 > 1n // => true

      0 == 0n // => true

      0 === 0n // => false: Der Operator === überprüft auch die Typgleichheit.

      Die bitweisen Operatoren (beschrieben in 4.8.3) arbeiten in der Regel mit BigInt-Operanden. Allerdings akzeptiert keine der Funktionen des Math-Objekts BigInt-Operanden.

       3.2.6Datum und Uhrzeit

      JavaScript definiert eine einfache Klasse Date zur Darstellung und Manipulation von Kalenderdaten und Uhrzeiten. JavaScript-Datumswerte sind Objekte, besitzen aber auch als Zeitstempel bzw. Timestamp eine numerische Darstellung, die die Anzahl der seit dem 1. Januar 1970 vergangenen Millisekunden angibt:

      let timestamp = Date.now(); // Die aktuelle Zeit als Zeitstempel (eine Zahl).

      let now = new Date(); // Die aktuelle Uhrzeit als Date-Objekt.

      let ms = now.getTime(); // In einen Millisekunden-Zeitstempel konvertieren.

      let iso = now.toISOString(); // In einen String im ISO-Standardformat konvertieren.

      Die Klasse Date und ihre Methoden werden ausführlich in 11.4 behandelt. Aber wir werden Date-Objekten in 3.9.3 erneut begegnen, wenn wir die JavaScript-Typumwandlungen genauer untersuchen.

       3.3Text

      Der JavaScript-Datentyp zur Darstellung von Text ist der String (eine Zeichenfolge). Ein String ist eine unveränderbare Folge von 16-Bit-Werten, die üblicherweise Unicode-Zeichen darstellen. Die Länge eines Strings ergibt sich aus der Anzahl an 16-Bit-Werten, die er enthält. In JavaScript sind die Indizes für Strings (und Arrays) nullbasiert: Der erste 16-Bit-Wert befindet sich an Position 0, der zweite an Position 1 und so weiter. Der leere String ist die Zeichenfolge mit der Länge 0. JavaScript hat keinen speziellen Typ zur Darstellung eines einzelnen String-Elements. Zur Darstellung eines einzelnen 16-Bit-Werts nutzen Sie einfach einen String der Länge 1.

       Zeichen, Codepoints und JavaScript-Strings

      JavaScript verwendet die UTF-16-Codierung des Unicode-Zeichensatzes: Zeichenketten sind Sequenzen von vorzeichenlosen 16-Bit-Werten. Die am häufigsten verwendeten Unicode-Zeichen (die der als Basic Multilingual Plane bezeichneten Ebene) haben Codepoints, die in 16 Bit passen und durch ein Element eines Strings dargestellt werden können. Unicode-Zeichen, deren Codepoints nicht in 16 Bit passen, werden nach den Regeln von UTF-16 als Sequenz (als Ersatzzeichenpaare bzw. Surrogate Pairs bezeichnet) zweier 16-Bit-Werte codiert. Es kann also sein, dass ein JavaScript-String der Länge 2 (zwei 16-Bit-Werte) nur ein einziges Unicode-Zeichen darstellt:

      let euro = "€";

      let love = "image";

      euro.length // => 1: Dieses Zeichen hat ein 16-Bit-Element.

      love.length // => 2: Die UTF-16-Codierung von image ist "\ud83d\udc99".

      Die meisten von JavaScript definierten Methoden zur String-Manipulation arbeiten auf 16-Bit-Werten, nicht auf Zeichen. Sie behandeln Ersatzzeichenpaare nicht unterschiedlich, führen keine Normalisierung des Strings durch und sorgen nicht einmal dafür, dass eine Zeichenkette wohlgeformtes UTF-16 ist.

      In ES6 sind Zeichenketten übrigens iterierbar, und wenn Sie eine for/of-Schleife oder den …-Operator auf einem String verwenden, wird über die tatsächlichen Zeichen des Strings iteriert, nicht über die 16-Bit-Werte.

       3.3.1String-Literale

      Um eine Zeichenkette in ein JavaScript-Programm einzufügen, umgeben Sie die Zeichen der Zeichenkette einfach mit einem Paar einfacher oder doppelter Anführungszeichen oder Backticks (' oder " oder `) ein. Doppelte Anführungszeichen und Backticks können in Strings enthalten sein, die durch einfache Anführungszeichen begrenzt werden. Das gilt analog auch für Strings, die durch doppelte Anführungszeichen oder Backticks begrenzt sind. Hier einige Beispiele für String-Literale:

      "" // Der leere String: Er enthält keine Zeichen.

      'Testen'

      "3.14"

      'name="mein_formular"'

      "Würden Sie das Buch von O'Reilly nicht vorziehen?"

      "π ist das Verhältnis des Umfangs eines Kreises zu seinem Radius"

      `"Sie hat 'hi' gesagt", sagte er.`

      Durch Backticks begrenzte Strings sind ein Feature von ES6 und erlauben die Einbettung von JavaScript-Ausdrücken in String-Literale. Die Syntax für eine solche Interpolation von Ausdrücken wird in 3.3.4 behandelt.

      In frühen Versionen von JavaScript mussten String-Literale in eine einzige Zeile geschrieben werden, und es ist nicht ungewöhnlich, auf JavaScript-Code zu stoßen, der lange Zeichenketten erzeugt, in denen einzeilige Strings mit dem +-Operator verkettet werden. Seit ES5 können Sie jedoch ein String-Literal auf mehrere Zeilen verteilen, indem Sie jede Zeile mit Ausnahme der letzten mit einem Backslash (\) beenden. Weder der Backslash noch das darauffolgende Zeilenendezeichen sind Teil des String-Literals. Falls Sie ein Newline-Zeichen in ein String-Literal einfügen müssen, das in einfachen oder doppelten Anführungszeichen steht, verwenden Sie die Zeichenfolge \n (im nächsten Abschnitt beschrieben). Die ES6-Backtick-Syntax erlaubt es, Strings über mehrere Zeilen zu verteilen, wobei die Zeilenabschlüsse Teil des String-Literals sind:

      // Ein zwei Zeilen repräsentierender String, auf einer Zeile formuliert:

      'two\nlines'

      // Ein einzeiliger String, der auf drei Zeilen verteilt wurde:

      "one\

      long\

      line"

      // Ein zweizeiliger String, der auf zwei Zeilen verteilt wurde:

      `das Newline-Zeichen am Ende dieser Zeile

      ist als solches in dieser Zeichenfolge enthalten`

      Falls Sie Ihre Strings mit einfachen Anführungszeichen begrenzen, passen Sie bitte bei (vor allem englischen) Zusammenziehungen oder Genitiven wie can’t und O’Reilly’s auf. (Im Deutschen sind solche Fälle seltener, können aber ebenfalls vorkommen.) Da der Apostroph das gleiche Zeichen wie das einfache Anführungszeichen ist, müssen Sie einen Backslash (\) nutzen, um in Strings, die in einfachen Anführungszeichen stehen, Apostrophe zu »maskieren« (Maskierungen bzw. Escape-Sequenzen werden im folgenden Abschnitt erläutert).

      In der clientseitigen JavaScript-Programmierung darf JavaScript-Code Strings mit HTML-Code enthalten, genauso wie HTML-Code Zeichenketten mit JavaScript-Code enthalten darf. In beiden Sprachen, JavaScript und HTML, werden einfache oder doppelte Anführungszeichen zur Einfassung von Strings benutzt. Wenn Sie JavaScript und HTML kombinieren, ist es deswegen empfehlenswert, die eine Art Anführungszeichen für JavaScript und die andere für HTML zu nutzen. Im folgenden Beispiel steht der String »Vielen Dank« in einfachen Anführungszeichen