Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

JavaScript-Datentypen und Datenstrukturen

Alle Programmiersprachen haben eingebaute Datenstrukturen, aber diese unterscheiden sich oft von einer Sprache zur anderen. Dieser Artikel versucht, die eingebauten Datenstrukturen in JavaScript aufzulisten und ihre Eigenschaften zu beschreiben. Diese können genutzt werden, um andere Datenstrukturen zu erstellen.

Das Sprachenüberblick bietet eine ähnliche Zusammenfassung der allgemeinen Datentypen, jedoch mit mehr Vergleichen zu anderen Sprachen.

Dynamische und schwache Typisierung

JavaScript ist eine dynamische Sprache mit dynamischen Typen. Variablen in JavaScript sind nicht direkt mit einem bestimmten Werttyp verknüpft und jede Variable kann Werte aller Typen zugewiesen (und neu zugewiesen) bekommen:

js
let foo = 42; // foo is now a number
foo = "bar"; // foo is now a string
foo = true; // foo is now a boolean

JavaScript ist auch eine schwach typisierte Sprache, was bedeutet, dass es eine implizite Typkonvertierung zulässt, wenn eine Operation unpassende Typen beinhaltet, anstatt Typfehler zu werfen.

js
const foo = 42; // foo is a number
const result = foo + "1"; // JavaScript coerces foo to a string, so it can be concatenated with the other operand
console.log(result); // 421

Implizite Umwandlungen sind sehr praktisch, können aber subtile Fehler erzeugen, wenn Konvertierungen dort stattfinden, wo sie nicht erwartet werden, oder wo sie in die andere Richtung erwartet werden (zum Beispiel, von Zeichenfolge zu Zahl anstatt von Zahl zu Zeichenfolge). Für Symbole und BigInts hat JavaScript bewusst bestimmte implizite Typkonvertierungen verboten.

Primitive Werte

Alle Typen außer Object definieren unveränderliche Werte, die direkt auf der untersten Ebene der Sprache dargestellt werden. Wir bezeichnen Werte dieser Typen als primitive Werte.

Alle primitiven Typen, außer null, können mit dem typeof-Operator getestet werden. typeof null gibt "object" zurück, daher muss man === null verwenden, um null zu testen.

Alle primitiven Typen, außer null und undefined, haben ihre entsprechenden Objekt-Wrapper-Typen, die nützliche Methoden zum Arbeiten mit den primitiven Werten bereitstellen. Zum Beispiel bietet das Number-Objekt Methoden wie toExponential(). Wenn auf eine Eigenschaft eines primitiven Wertes zugegriffen wird, umhüllt JavaScript den Wert automatisch in das entsprechende Wrapper-Objekt und greift stattdessen auf die Eigenschaft im Objekt zu. Allerdings wirft der Zugriff auf eine Eigenschaft von null oder undefined eine TypeError-Exception, was die Einführung des optionalen Verkettungsoperators erforderlich macht.

Typ typeof Rückgabewert Objekt-Wrapper
Null "object" N/V
Undefined "undefined" N/V
Boolean "boolean" Boolean
Number "number" Number
BigInt "bigint" BigInt
String "string" String
Symbol "symbol" Symbol

Die Referenzseiten der Objekt-Wrapper-Klassen enthalten mehr Informationen über die verfügbaren Methoden und Eigenschaften für jeden Typ sowie detaillierte Beschreibungen der Semantik der primitiven Typen selbst.

Null-Typ

Der Null-Typ wird von genau einem Wert bewohnt: null.

Undefined-Typ

Der Undefined-Typ wird von genau einem Wert bewohnt: