JavaScript

Knowledge Base

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

  • Object

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.