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

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


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

      // mehrerer Ziffern.

      pattern.test(text) // => true: Es gibt einen Treffer.

      text.search(pattern) // => 9: Position des ersten Treffers.

      text.match(pattern) // => ["1", "2", "3"]: Das Array mit allen

      // Treffern.

      text.replace(pattern, "#") // => "testing: #, #, #"

      text.split(/\D+/) // => ["","1","2","3"]: An Nicht-Ziffern

      // aufgetrennt.

       3.4Boolesche Werte

      Ein boolescher Wert steht für wahr oder falsch, ein oder aus, ja oder nein. Es gibt nur zwei mögliche Werte dieses Typs. Die reservierten Wörter true und false werden zu diesen beiden Werten ausgewertet.

      Boolesche Werte sind im Allgemeinen das Ergebnis von Vergleichen, die Sie in Ihren JavaScript-Programmen vornehmen, zum Beispiel:

      a === 4

      Dieser Code prüft, ob der Wert der Variablen a identisch mit der Zahl 4 ist. Ist das der Fall, lautet das Ergebnis dieses Vergleichs true. Ist a nicht gleich 4, lautet das Ergebnis des Vergleichs false.

      Boolesche Werte kommen häufig in den Kontrollstrukturen von JavaScript zum Einsatz. Beispielsweise führt die if/else-Anweisung von JavaScript eine von zwei Aktionen aus, wenn ein boolescher Wert true ist, und die andere, wenn er false ist. Üblicherweise binden Sie den Vergleich, der den booleschen Wert erzeugt, direkt in die Anweisung ein, die ihn nutzt. Das sieht dann folgendermaßen aus:

      if (a === 4) {

      b = b + 1;

      } else {

      a = a + 1;

      }

      Dieser Code prüft, ob a gleich 4 ist. Ist das der Fall, addiert er 1 zu b hinzu; andernfalls addiert er 1 zu a hinzu.

      Wie wir in 3.9 besprechen werden, kann jeder JavaScript-Wert in einen booleschen Wert umgewandelt werden. Die folgenden Werte werden in false konvertiert und verhalten sich deswegen auch wie false:

      undefined

      null

      0

      -0

      NaN

      "" // Der leere String.

      Alle anderen Werte, einschließlich aller Objekte (und Arrays), werden in true konvertiert und verhalten sich wie true. false und die sechs Werte, die dazu umgewandelt werden, bezeichnet man bisweilen als falsy und alle anderen Werte als truthy. (Man spricht auch von nicht-strikt falsch oder wahr.) Immer wenn JavaScript einen booleschen Wert erwartet, funktioniert ein falsy-Wert wie false und ein truthy-Wert wie wahr.

      Nehmen Sie zum Beispiel an, die Variable o enthielte entweder ein Objekt oder den Wert null. Dass o nicht null ist, könnten Sie dann explizit mit einer if-Anweisung wie der folgenden prüfen:

      if (o !== null) …

      Der Ungleichheitsoperator !== vergleicht o mit null und wird entweder zu true oder false ausgewertet. Sie können den Vergleich aber auch gleich weglassen und sich auf den Umstand stützen, dass null ein falscher Wert und ein Objekt hingegen ein wahrer Wert ist:

      if (o) …

      Im ersten Fall wird der Inhalt der if-Anweisung nur ausgeführt, wenn o nicht null ist. Der zweite Fall ist weniger exakt: Der if-Block wird ausgeführt, wenn o nicht false oder irgendein anderer falsy-Wert (wie null oder undefined) ist. Welche if-Anweisung für Ihr Programm geeignet ist, hängt davon ab, welche Werte o voraussichtlich zugewiesen werden. Wenn Sie null von 0 und "" unterscheiden müssen, sollten Sie einen expliziten Vergleich wählen.

      Boolesche Werte haben eine toString()-Methode, mit der Sie sie in die Strings »true« oder »false« umwandeln können – weitere nützliche Methoden besitzen sie darüber hinaus nicht. Trotz dieser trivialen API gibt es drei boolesche Operatoren.

      Der &&-Operator führt die boolesche UND-Verknüpfung durch. Er wird nur dann zu einem wahren Wert ausgewertet, wenn beide Operanden wahre Werte sind. Andernfalls wird er zu einem falschen Wert ausgewertet. Der ||-Operator|| (boolescher ODER-Operator)boolescher ODER-Operator (||) führt eine boolesche ODER-Operation aus: Er wird zu einem wahren Wert ausgewertet, wenn einer (oder beide) Operanden wahre Werte sind. Zu einem falschen Wert wird er nur ausgewertet, wenn beide Operanden falsche Werte sind. Außerdem gibt es noch den unären !-Operator, der eine boolesche NICHT-Operation durchführt: Er wird zu true ausgewertet, wenn sein Operand ein falscher Wert ist, und zu false, wenn sein Operand ein wahrer Wert ist, zum Beispiel:

      if ((x === 0 && y === 0) || !(z === 0)) {

      // x und y sind beide 0 oder z ist nicht 0.

      }

      Alle Einzelheiten zu diesen Operatoren finden Sie unter 4.10.

       3.5null und undefined

      null ist ein Schlüsselwort, das zu einem speziellen Wert ausgewertet wird, der üblicherweise das Fehlen eines Werts anzeigt. Wird der typeof-Operator auf null angewandt, erhält man als Ergebnis den String »object«. Das zeigt an, dass null als spezieller Objektwert betrachtet werden kann, der »kein Objekt« bedeutet. In der Praxis wird null normalerweise jedoch als einziges Exemplar seines eigenen Typs betrachtet und kann ebenso eingesetzt werden, um »kein Wert« für Zahlen oder Strings anzuzeigen. Die meisten Programmiersprachen besitzen ein Äquivalent zu JavaScripts null: Vielleicht kennen Sie es als NULL, nil oder None.

      JavaScript kennt noch einen weiteren Wert, der das Fehlen eines Werts anzeigt. undefined steht für ein grundlegenderes Fehlen. Es ist der Wert von Variablen, die noch nicht initialisiert wurden, und ebenfalls das Ergebnis, wenn Sie den Wert einer Objekteigenschaft oder eines Array-Elements abfragen, die bzw. das es nicht gibt. Der Wert undefined ist auch der Rückgabewert von Funktionen, die nicht explizit einen Wert zurückgeben, und der Wert von Funktionsparametern, für die kein Argument übergeben wird. undefined ist eine vordefinierte globale Konstante (also kein Sprachschlüsselwort wie null, obwohl das in der Praxis keine große Rolle spielt), die mit dem Wert undefined initialisiert wird. Wendet man den typeof-Operator auf den Wert undefined an, liefert er »undefined«. Das zeigt an, dass dieser Wert das einzige Exemplar eines speziellen Typs ist.

      Trotz dieser Unterschiede können null und undefined beide das Fehlen eines Werts anzeigen und sind häufig gegeneinander austauschbar. Der Gleichheitsoperator == betrachtet sie als gleich. (Verwenden Sie den strengen Gleichheitsoperator ===, um sie zu unterscheiden.) Beides sind falsy-Werte: Sie verhalten sich wie false, wenn ein boolescher Wert gefordert ist. Weder null noch undefined besitzt irgendwelche Eigenschaften oder Methoden. Greift man mit . oder [] auf eine Eigenschaft oder Methode dieser Werte zu, erhält man einen TypeError.

      Man könnte undefined als Zeichen für das systembasierte, unerwartete oder fehlerhafte Fehlen eines Werts betrachten und null als Zeichen für ein programmbasiertes, erwartetes oder normales Fehlen eines Werts. Ich vermeide die Verwendung von null und undefined möglichst, aber wenn ich einen dieser Werte einer Variablen oder Eigenschaft zuweisen oder an eine Funktion übergeben oder aus einer Funktion zurückgeben muss, verwende ich normalerweise null. Einige Programmierer bemühen sich, null gänzlich zu vermeiden und an seiner Stelle möglichst immer undefined zu benutzen.

       3.6Symbole

      Symbole wurden in ES6 eingeführt, um als Eigenschaftsnamen zu dienen, die nicht aus einem String bestehen. Dazu muss man wissen, dass der grundlegende


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