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

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



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

repräsentiert Textmuster und ermöglicht ausgeklügelte Vergleichs-, Such- und Ersetzungsoperationen auf Zeichenketten. Der Date-Datentyp stellt Datum und Uhrzeit dar und unterstützt rudimentäre Rechenoperationen mit Datumswerten. Der Fehlertyp Error und dessen Untertypen stellen Fehler dar, die beim Ausführen von JavaScript-Code auftreten können. Alle diese Typen werden in Kapitel 11 behandelt.

      JavaScript unterscheidet sich von statischeren Sprachen dadurch, dass Funktionen und Klassen nicht nur Teil der Sprachsyntax, sondern selbst Werte sind, die von JavaScript-Programmen manipuliert werden können. Wie alle nicht primitiven JavaScript-Werte sind Funktionen und Klassen eine spezialisierte Art von Objekt. Sie werden ausführlich in den Kapiteln 8 und 9 behandelt.

      Der JavaScript-Interpreter führt im Rahmen der Speicherverwaltung eine automatische Speicherbereinigung (Garbage Collection) durch. Als JavaScript-Programmierer muss man sich in der Regel also nicht um das Löschen oder die Deallokation von Objekten oder anderen Werten kümmern. Kann auf einen Wert nicht mehr zugegriffen werden – wenn ein Programm keine Möglichkeit mehr hat, darauf zu verweisen –, weiß der Interpreter, dass der Wert nicht mehr verwendet werden kann, und gibt automatisch den durch den Wert belegten Speicher frei. (Als JavaScript-Programmierer muss man darauf achten, dass Werte nicht versehentlich länger als nötig für das Programm »erreichbar« bleiben und der belegte Speicher deshalb nicht freigegeben werden kann.)

      JavaScript unterstützt einen objektorientierten Programmierstil. Lax formuliert, bedeutet dies, dass man keine global definierten Funktionen nutzt, die auf Werten unterschiedlicher Typen operieren, sondern dass die Datentypen selbst Methoden für die Arbeit mit Werten definieren. Wollen wir beispielsweise die Elemente in einem Array a sortieren, übergeben wir a nicht an irgendeine sort()-Funktion. Stattdessen rufen wir die sort()-Methode von a auf:

      a.sort(); // Die objektorientierte Version von sort(a).

      Die Definition von Methoden wird in Kapitel 9 behandelt. Technisch gesehen, besitzen nur JavaScript-Objekte Methoden. Zahlen, Zeichenfolgen, boolesche Werte und Symbolwerte verhalten sich jedoch ebenfalls so, als besäßen sie Methoden. In JavaScript sind null und undefined die einzigen Werte, auf denen keine Methoden aufgerufen werden können.

      Die Objekttypen von JavaScript sind veränderbar, die primitiven Typen sind unveränderbar. Der Wert eines veränderbaren Typs ist mutabel: Ein JavaScript-Programm kann die Werte von Objekteigenschaften und Array-Elementen ändern. Zahlen, boolesche Werte, Symbole, null und undefined sind unveränderbar – es ergäbe nicht einmal Sinn, von der Änderung des Werts einer Zahl zu sprechen. Man könnte Strings als Arrays von Zeichen betrachten und deshalb vielleicht erwarten, dass sie veränderbar seien. Strings sind in JavaScript aber unveränderbar: Sie können auf die Zeichen an einer beliebigen Position einer Zeichenfolge zugreifen, sie aber nicht verändern. Die Unterschiede zwischen veränderbaren und unveränderbaren Werten werden genauer untersucht in 3.8.

      JavaScript wandelt Werte großzügig von einem Typ in einen anderen Typ um. Übergeben Sie zum Beispiel einem Programm, das einen String erwartet, eine Zahl, wandelt es diese Zahl automatisch für Sie in einen String um. Und geben Sie einen nicht booleschen Wert an einer Stelle an, an der ein boolescher Wert erwartet wird, führt JavaScript die erforderliche Typumwandlung durch. Die Regeln für die Wertumwandlung werden in 3.9 erläutert. Die toleranten Konvertierungsregeln für Werte wirken sich in JavaScript auf die Definition der Gleichheit aus – in 3.9.1 wird beschrieben, welche Typumwandlungen der Gleichheitsoperator == durchführt. (In der Praxis wird auf die Verwendung des als veraltet betrachteten nichtstrikten Gleichheitsoperators == jedoch zugunsten des strikten Gleichheitsoperators === verzichtet, der keine Typumwandlungen vornimmt. Weitere Informationen zu beiden Operatoren finden Sie unter 4.9.1.)

      Konstanten und Variablen ermöglichen Ihnen, Namen zu verwenden, um in Ihren Programmen auf Werte zu verweisen. Konstanten werden mit const deklariert und Variablen mit let (oder in älterem JavaScript-Code mit var). JavaScript-Konstanten und -Variablen sind untypisiert: In den Deklarationen wird nicht angegeben, welche Art von Werten zugewiesen werden sollen. Die Variablendeklaration und -zuweisung wird in 3.10 behandelt.

      Wie Sie bereits an dieser langen Einführung sehen können, ist dies ein umfassendes Kapitel, in dem viele grundlegende Details zur Darstellung und Manipulation von Daten in JavaScript erklärt werden. Legen wir direkt los mit den Einzelheiten zu Zahlen und Text.

       3.2Zahlen

      Der grundlegende numerische Typ in JavaScript, Number, wird verwendet, um Ganzzahlen und (näherungsweise) reelle Zahlen darzustellen. JavaScript stellt Zahlen im 64-Bit-Gleitkommaformat dar, das durch den IEEE-754-Standard1 definiert ist, und kann damit Zahlenwerte bis hinauf zu ±1.7976931348623157 × 10308 und bis hinab zu ±5 × 10–324 darstellen.

      Das JavaScript-Zahlenformat ermöglicht Ihnen, alle ganzen Zahlen zwischen –9.007.199.254.740.992 (–253) und 9.007.199.254.740.992 (253) exakt festzuhalten, jeweils inklusive der Grenzen. Falls Sie größere ganzzahlige Werte als diese verwenden, können Sie in den letzten Ziffern an Genauigkeit verlieren. Beachten Sie jedoch, dass in JavaScript bestimmte Operationen (wie die Indizierung von Arrays und die in Kapitel 4 beschriebenen Bit-Operationen) mit 32-Bit-Ganzzahlen durchgeführt werden. Falls Sie größere Integer-Werte exakt darstellen müssen, schauen Sie sich bitte 3.2.5 an.

      Erscheint eine Zahl unmittelbar in einem JavaScript-Programm, bezeichnet man sie als Zahlliteral. JavaScript unterstützt Zahlliterale in verschiedenen Formaten, die in den folgenden Abschnitten beschrieben werden. Man kann übrigens jedem Zahlliteral ein Minuszeichen (–) voranstellen, um die Zahl als negativ zu kennzeichnen.

       3.2.1Ganzzahlliterale

      In einem JavaScript-Programm wird eine Ganzzahl zur Basis 10 als eine Folge von Ziffern geschrieben, zum Beispiel:

      0

      3

      10000000

      Neben Ganzzahlliteralen zur Basis 10 kennt JavaScript Hexadezimalliterale (zur Basis 16). Ein Hexadezimalliteral beginnt mit den Zeichen 0x oder 0X, auf die eine Reihe hexadezimaler Ziffern folgt. Hexadezimale Ziffern sind die arabischen Ziffern 0 bis 9 und die Buchstaben a (oder A) bis f (oder F), wobei Letztere die Werte von 10 bis 15 repräsentieren. Hier sind einige Beispiele für hexadezimale Ganzzahlliterale:

      0xff // => 255: (15*16 + 15)

      0xBADCAFE // => 195939070

      In ES6 und höher können Sie Ganzzahlen auch binär (zur Basis 2) oder oktal (zur Basis 8) mit den Präfixen 0b und 0o (oder 0B und 0O) anstelle von 0x ausdrücken:

      0b10101 // => 21: (1*16 + 0*8 + 1*4 + 0*2 + 1*1)

      0o377 // => 255: (3*64 + 7*8 + 7*1)

       3.2.2Gleitkommaliterale

      Gleitkommaliterale können einen Dezimalpunkt aufweisen; sie verwenden die traditionelle Syntax für reelle Zahlen. Eine reelle Zahl wird in JavaScript durch einen ganzzahligen Teil, einen Punkt als Dezimaltrenner und einen Nachkommateil der Zahl dargestellt.

      Außerdem