Zum Inhalt springen
BitDojo
In 2 Monaten zum Frontend Engineer
JavaScriptKostenlos7 Min. Lesezeit

Werte und Typen

Du kannst benennen, welche Sorten von Werten es gibt, wann du const nimmst und warum du im Alltag mit drei Gleichheitszeichen vergleichst.

Einleitung

Jedes Programm schiebt Werte hin und her: eine Zahl, ein Stück Text, eine Liste von Bestellungen. JavaScript unterscheidet dabei nur eine Handvoll Sorten, und diese Handvoll erklärt einen großen Teil der Meldungen, die dir im ersten Monat begegnen.

Wir gehen zuerst die Sorten durch, danach die zwei Wörter für einen Namen, zum Schluss die Vergleiche. Der letzte Teil ist der, in dem sich die meisten Fehler verstecken.

Welche Sorten es gibt

Tippe in der Konsole des Browsers typeof 42 ein. Die Antwort lautet "number". Mit typeof fragst du, welcher Sorte ein Wert angehört.

Wichtig sind am Anfang fünf Sorten: number für jede Zahl (auch 3.5, eine eigene Sorte für Kommazahlen existiert nicht), string für Text, boolean für wahr und falsch, dazu undefined und null. Alles andere ist ein Objekt: eine Liste, ein Datum, eine Funktion, ein selbst gebautes Ding mit Feldern.

Das sieht in der Konsole so aus:

const gruss = "hallo";
gruss.toUpperCase();   // "HALLO"
console.log(gruss);    // "hallo", unverändert

Wer das übersieht, sucht lange nach einem Text, der sich weigert, großgeschrieben zu werden.

Wie ein Name an einen Wert kommt

Du gibst einem Wert einen Namen, damit du ihn später wieder aufrufen kannst. Dafür gibt es const und let.

const preise = [3, 5];
preise.push(9);        // erlaubt, die Liste bleibt dieselbe
preise = [1, 2];       // Fehler: Zuweisung an eine Konstante

Die Faustregel: Du schreibst const, bis der Code dich zu let zwingt. Das dritte Wort, var, stammt aus der alten Zeit und hat andere Sichtbarkeitsregeln. Schreib es nicht neu, aber erkenne es in fremdem Code.

Was als wahr durchgeht

Eine Bedingung will einen Wahrheitswert. Bekommt sie etwas anderes, rechnet JavaScript still um. Diese Umrechnung solltest du auswendig kennen.

Die leere Liste ist die Falle, über die fast jeder einmal stolpert:

if ([]) console.log("das läuft");        // läuft
if ([].length) console.log("das nicht"); // läuft nicht

Wer prüfen will, ob eine Liste Einträge hat, prüft .length, nicht die Liste selbst.

Zwei Arten zu vergleichen

== und === sehen ähnlich aus und tun etwas deutlich Verschiedenes.

Der lose Vergleich folgt einer Tabelle, die niemand im Kopf hat: "" == 0 ist wahr, null == undefined ist wahr, null == 0 ist falsch. Die geduldete Ausnahme ist wert == null, weil das in einem Schritt beide Leer-Werte prüft.

Leer, unbekannt und nie gesetzt

Zwei Werte stehen für "hier ist nichts", und der Unterschied zwischen ihnen kommt in Bewerbungsgesprächen regelmäßig vor.

Praktisch heißt das: undefined in einer Antwort vom Server ist meistens ein Tippfehler im Feldnamen.

Warum das später zählt

Eine Liste umformen, auf eine Antwort warten, einen Fehler abfangen: Überall entscheidet die Frage, welcher Wert gerade in der Hand liegt und ob er der ist, den du erwartest. Im nächsten Kapitel geht es um Funktionen und darum, wo ein Name überhaupt sichtbar ist.

Übungetwa 30 Minuten

Die Sorten in der Konsole nachstellen

Du prüfst jede Behauptung dieser Lektion selbst, statt sie zu glauben.

  1. Öffne eine beliebige Seite, drücke F12 und wechsle auf "Konsole".
  2. Gib nacheinander typeof 42, typeof "42", typeof null und typeof [] ein. Notiere die vier Antworten. Zwei davon überraschen.
  3. Lege const liste = [1, 2] an, hänge mit liste.push(3) etwas an und versuche danach liste = []. Lies die Fehlermeldung laut vor.
  4. Prüfe "" == false, "" === false und null == undefined. Schreibe zu jedem Ergebnis einen Satz Begründung.
  5. Teste if ([]) console.log("wahr") und danach dasselbe mit [].length.

Fertig, wenn

  • Du kannst ohne Nachschlagen sagen, was `typeof null` liefert.
  • Du kannst an einem eigenen Beispiel zeigen, was `const` schützt.
  • Du kannst begründen, warum `[]` in einer Bedingung als wahr gilt.

Sitzt es?

9 Karten aus dieser Lektion, 6 Aufgaben im Prüfungsvorrat.