JavaScript / ECMAScript
Datentypen
JavaScript ist eine dynamisch-typisierte Skriptsprache, d. h. die Typisierung einer Variable findet zur Laufzeit statt und wird nicht bereits deklarativ festgelegt. Gleichzeitig kann sich damit der Typ einer Variable auch zur Laufzeit ändern - je nach dem was für ein Wert der Variable zugeordnet wird.
Trotzdem gibt es auch in JavaScript Datentypen - des ECMAScript definiert in der aktuellen Version sechs primitive Datentypen:
- Undefined
- Null
- Boolean
- Number
- String
- Symbol (seit ECMAScript 2015 / 6. Edition)
und den nicht-primitiven Datentyp
Leider kommt es hier oft zu Verwirrungen - denn um den (aktuellen) Typ eine Variable X zu ermitteln, wird der Befehl "typeof(x)" oder "typeof x" (beide Schreibweisen sind zulässig) verwendet. Dieser Befehl liefert den aktuellen Typ in Form eines Strings zurück und zwar:
- Variable x hat den Typ Undefined -> typeof(x) => "undefined"
- Variable x hat den Typ Null -> typeof(x) => "object"
- Variable x hat den Typ Boolean -> typeof(x) => "boolean"
- Variable x hat den Typ Number -> typeof(x) => "number"
- Variable x hat den Typ String -> typeof(x) => "string"
- Variable x hat den Typ Symbol -> typeof(x) => "symbol"
- Variable x hat den Typ Object -> typeof(x) => "object"
- Variable x enthält eine Funktion, welches nach ECMAScript-Definition ein "aufrufbares Objekt" ist -> typeof(x) => "function"
D. h. obwohl Null einen separaten Typ darstellt (nach ECMAScript-Definition) liefert - fehlerhafterweise - typeof(x) den Wert "object" und obwohl es keinen separaten Typ für eine Funktion gibt (nach ECMAScript-Definition handelt es sich bei einer Funktion um ein "aufrufbares" Objekt) wird dennoch der Wert "function" statt "object" zurückgeliefert.