Der Wert »null« in JavaScript
Der Wert »null« steht für ein spezielles leeres Verzeichnis, das unveränderbar ist und keine Einträge enthält, entsprechend wird der Wert »null« manchmal verwendet, um das Fehlen eines Verzeichnisses darzustellen. (Der Wert »null« unterscheidet sich aber auch von einem normalen Verzeichnis, das nicht gleich »null«, aber leer ist.)
»null« wird gerne Einträgen zugewiesen, deren Wert üblicherweise ein Verzeichnis ist, um das Fehlen eines Verzeichnisses zu kennzeichnen. Formal gesehen ist »null« zwar ebenfalls ein Verzeichnis, aber man nimmt es kaum als solches wahr, da es nicht wie andere Verzeichnisse verwendet werden kann. Falls ein Eintrag den Wert »null« hat, so existiert sie und ist schon mit einem Wert belegt, aber mit einem Wert, der als Platzhalter kennzeichnet, daß die Information oder die Sache, für welche der Eintrag eigentlich vorgesehen ist, fehlt.
- Aussprachehinweis
- null nʌl (nʌəl (sg), ⌊ˈnʌ̮ɫː⌋ (sc), nʌl (d), ˈn əl (n))
Das Literal »null«
Das Literal »null« hat den Wert »null«.
- Auswertung
null
null
»null« enthält keine Einträge. Versuchen wir, einen Eintrag aus »null« auszulesen, erhalten wir immer eine Fehlermeldung, egal welcher Name für den Eintrag verwendet wird.
- Auswertung
null.a
TypeError: null has no properties
Wir können aber auch keine Einträge in dem Verzeichnis »null« anlegen.
- Auswertung
null.a = 2
TypeError: null has no properties
Wenn »null« dort verwendet wird, wo eine Zahl erwartet wird, hat es oft den Wert »0«.
- Auswertung
1 + null
1
Wenn »null« dort verwendet wird, wo eine Zeichenfolge erwartet wird, steht es oft für die Zeichenfolge »null«.
- Auswertung
"abc" + null
"abcnull"
Der ECMAScript -Typ von »null«
Der Wert »null« hat den Typ „Null“.
Der typeof-Typ von »null«
Der Wert »null« hat den Typ »object«.
Tabelle der behandelten Typen
- Typen (Übereinstimmung)
Ausdruck ECMAScript-Typ typeof-Typ
(Zahl) Number number
(Zeichenfolge) String string
undefined Undefined undefined
(Wahrheitswert) Boolean boolean- Typen (Nichtübereinstimming)
Ausdruck ECMAScript-Typ typeof-Typ
null Null object
(Verzeichnis) Object object
(Funktion) Object function
Liste der Bedeutungen (vereinfacht)
NaN „keine Zahl“ (hat aber den Typ »number« laut »typeof«)
null „kein Objekt“ (hat aber den Typ »object« laut »typeof«)
undefined „kein Wert“ (ist aber ein Wert)
Wann nimmt man »undefined« und wann »null«? ⃗
Man könnte einem Eintrag den Wert »undefined« zuweisen, wenn man ihn als nicht genutzt kennzeichnen will. Es ist aber besser dafür »null« oder »NaN« zu verwenden, weil der Eintrag dann nicht mit einem gar nicht vorhandenen Eintrag verwechselt werden kann. (Allerdings sollte man einen Eintrag ohnehin nicht mit dem Wert »undefined« vergleichen, wenn man wissen will, ob dieser in einem Verzeichnis existiert, sondern dafür den Operator »in« verwenden, wie schon behandelt wurde.)
Deswegen wird manchmal empfohlen, einem Eintrag als Platzhalter nie den Wert »undefined« zuzuweisen, sondern höchstens einen der Werte
- »null« (wenn der Eintrag normalerweise oder später an ein Verzeichnis gebunden werden soll) oder
- »NaN« (wenn der Eintrag normalerweise oder später eine Zahl enthalten soll).
Es ist etwas verwirrend, daß man in JavaScript so viele verschieden Möglichkeiten hat, um die Abwesenheit eines „normalen“ Wertes zu kennzeichnen. Man kann die verschiedenen Möglichkeiten so interpretieren:
»undefined« ist technisch gesehen ein Wert, der aber ausdrückt, daß es hier „keinen (normalen) Wert“ gibt.
»null« ist technisch gesehen ein Verzeichnis, das aber ausdrückt, daß es hier „keinen (normales) Verzeichnis“ gibt.
»NaN« ist technisch gesehen eine Zahl, die aber ausdrückt, daß es hier „keine (normale) Zahl“ gibt.
»null« als Objekt ⃗
»null« ist kein Verzeichnis, aber hat den sonst für Verzeichnisse typischen Typ »object«. Wenn wir Werte mit dem Typ »object« als „Objekte“ bezeichnen, können wir »null« als uneigentliches Objekt bezeichnen und es mit den anderen Objekten (den eigentlichen Objekten) zu den Metaobjekten zusammenfassen.
- Arten von Metaobjekten
- Metaobjekte (Typ »object«)
- uneigentliche Objekte (»null«)
- eigentliche Objekte (nicht »null«)
»null« als Wert ⃗
Wir geben im folgenden die behandelten Arten von Metawerten wieder. Da »null« kein Verzeichnis ist (weil es keine Einträge enthalten kann), fassen wir es dabei aber nicht mit den Verzeichnissen zusammen
- Arten von Metawerten
- Metawerte
- uneigentliche Werte (»undefined«)
- eigentliche Werte (nicht »undefined«)
- Fundamentalwerte (keine Verzeichnisse)
- Metazahlen (Typ »number«)
- uneigentliche Zahlen (»NaN«)
- eigentliche Zahlen (»isNaN« ergibt »false«)
- Zeichenfolgen (Typ »string«)
- Wahrheitswerte (Typ »boolean«)
- »null« (Typ »object«)
- Verzeichnisse (können Einträge enthalten)
- Verzeichnisse vom Typ »object«
- Verzeichnisse vom Typ »function«