null und undefined
Sie kennen Booleans — klares Ja oder Nein. Programme müssen oft auch sagen: „hier gibt es keinen Wert.“ JavaScript kennt zwei übliche Leerwerte: undefined und null. Sie wirken ähnlich, erzählen aber unterschiedliche Geschichten. Hier trennen wir sie, damit spätere Umwandlungen und Prüfungen verständlich bleiben.
Was ist der Unterschied zwischen null und undefined?
undefined heißt meist „noch nichts zugewiesen“ — eine Variable mit let ohne Wert, oder etwas Fehlendes. null heißt „absichtlich leer“: Sie (oder eine API) setzen null, um einen Platz zu leeren. Prüfen Sie mit typeof: typeof undefined ergibt "undefined", aber typeof null ist der bekannte Quirk "object". Vergleichen Sie lieber mit ===. Beide sind falsy, aber keine Booleans (true / false).
Werkzeugkasten für Leerwerte
📊 null vs. undefined für Einsteiger
| Idee | Beispiel | Ergebnis / Hinweis |
|---|---|---|
| Fehlend / nicht zugewiesen | let x; dann x |
undefined |
| Absichtlich leer | let box = null |
Sie wählen leer |
typeof fehlend |
typeof undefined |
"undefined" |
typeof leer |
typeof null |
"object" (Quirk — bedeutet trotzdem leer) |
| Strenger Vergleich | box === null |
true, wenn box null hält |
| Lockerer Vergleich | null == undefined |
true mit == — für Klarheit === bevorzugen |
undefined — noch kein Wert
Deklarieren Sie einen Namen mit let und weisen nichts zu. Der Wert ist undefined. Loggen Sie Wert und typeof, damit das Label "undefined" sitzt.
let nickname;
console.log(nickname);
console.log(typeof nickname);
null — absichtlich leer
Setzen Sie null, wenn Sie klar „kein Wert“ signalisieren wollen. Das ist etwas anderes als Vergessen der Zuweisung.
let selected = null;
console.log(selected);
console.log(typeof selected);
typeof nebeneinander
Legen Sie beide Ergebnisse nebeneinander. Merken Sie: typeof null mit "object" ist ein Quirk — noch keine volle Objekt-Lektion.
console.log(typeof undefined);
console.log(typeof null);
let a;
let b = null;
console.log(typeof a);
console.log(typeof b);
Bevorzugen Sie === für null und undefined
=== prüft Wert und Typ. Nutzen Sie es für „genau null“ oder „genau undefined“. Mit == können null und undefined zueinander passen — leicht missverständlich beim Lernen.
let user = null;
let title;
console.log(user === null);
console.log(title === undefined);
console.log(user === undefined);
Lockeres == kann beide vermischen
Mit == passen null und undefined zueinander. Loggen Sie es einmal — echte Checks danach mit ===.
console.log(null == undefined);
console.log(null === undefined);
Die erste Zeile ist true, weil == locker ist. Die zweite ist false. Schreiben Sie echte Checks mit ===, damit die Absicht klar bleibt.
Beide Leerwerte auf der Seite zeigen
Speichern Sie einen undefined-artigen Namen und einen mit null, dann kurze Labels mit textContent.
<!DOCTYPE html>
<html>
<head>
<title>null and undefined — labels</title>
</head>
<body>
<p id="out">…</p>
<script>
let title;
let avatar = null;
document.getElementById("out").textContent =
"title=" + title + " | avatar=" + avatar;
</script>
</body>
</html>
Der Absatz zeigt beide Leerwerte in einer Zeile. Ändern Sie nur avatar in einen kurzen String, aktualisieren Sie, und prüfen Sie: die rechte Hälfte ändert sich, title bleibt undefined.
Selbst ausprobieren
- Deklarieren Sie
let city;— loggen Siecityundtypeof cityohne Zuweisung. - Setzen Sie
let bag = null;— loggen Sie Wert undtypeof bag(erwarten Sie den"object"-Quirk). - Loggen Sie
typeof undefinedundtypeof nullnebeneinander. - Vergleichen Sie mit
===: einenull-Variable gegennullund gegenundefined. - Loggen Sie einmal
null == undefined, schreiben Sie echte Checks dann mit===. - Im HTML-Demo setzen Sie
avatarauf"pic.png", aktualisieren und lesen die neue Zeile.
Typische Fehler
nullundundefinedimmer gleichsetzen — die Bedeutung unterscheidet sich (absichtlich vs. nicht zugewiesen)- Panik bei
typeof null→"object"— Quirk;nullbleibt absichtlich leer - Blind auf
==zwischen beiden setzen, ohne den lockeren Match zu sehen - Beide als Boolean bezeichnen — sie sind Leerwerte; Booleans sind nur
true/false - Leeren String
""mitnullverwechseln —""ist weiterhin ein String
Kurzfassung
undefined: fehlend / noch nicht zugewiesen;typeof→"undefined"null: absichtlich leer, von Ihnen gesetzt;typeof→"object"(Quirk)- Bevorzugen Sie
===für klare Checks; beide sind falsy, aber keine Booleans - Leerer String
""ist Text — nicht dasselbe wienulloderundefined - Als Nächstes: Typumwandlung — Werte bewusst von einer Art in eine andere bringen
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt