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.
Die Sorten in der Konsole nachstellen
Du prüfst jede Behauptung dieser Lektion selbst, statt sie zu glauben.
- Öffne eine beliebige Seite, drücke F12 und wechsle auf "Konsole".
- Gib nacheinander
typeof 42,typeof "42",typeof nullundtypeof []ein. Notiere die vier Antworten. Zwei davon überraschen. - Lege
const liste = [1, 2]an, hänge mitliste.push(3)etwas an und versuche danachliste = []. Lies die Fehlermeldung laut vor. - Prüfe
"" == false,"" === falseundnull == undefined. Schreibe zu jedem Ergebnis einen Satz Begründung. - 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.