Datentypen
Folgende Datentypen in JavaScript sind hier relevant:
number
string
boolean
object
undefined
null
number
Der Typ number
umfasst ganze Zahlen (z.B. 123
) und Gleitkommazahlen (z.B. 3.1415
).
Es gibt also keinen besonderen Datentyp für Gleitkommazahlen.
string
Zeichenketten bzw. Strings werden mit "
, '
oder `
umgeben. Hier werden Strings
hauptsächlich mit einfachen Anführungszeichen angegeben (also '
). Mit Template-Strings,
die mit `
umgeben werden, lassen sich Zeichenketten dynamisch durch Interpolation
von JavaScript-Ausdrücken erstellen. Dabei werden die interpolierten Ausdrücke in
${ ... }
angegeben:
const firstName = 'John';
const lastName = 'Doe';
console.log(`Full name: ${firstName} ${lastName}`);
Dies ist manchmal eleganter oder kompakter als die String-Konkatenation mit +
.
boolean
Wie auch in Java gewohnt sind die Wahrheitswerte true
und false
die einzigen möglichen Werte von boolean
.
object
Zu object
zählen Objekte, Arrays und Funktionen. Objekte werden in geschweiften Klammern
angegeben und bestehen aus einzelnen key/value-Paaren der Form key: value
, die mit Komma
voneinander getrennt werden:
const jane = {
firstName: 'Jane',
lastName: 'Smith',
age: 36,
};
Die Schlüssel (key) werden manchmal als Eigenschaften bezeichnet (properties). Für Werte der
Eigenschaften eines Objekts gibt es keine Einschränkungen in Bezug auf die zulässigen Typen,
d.h. die Werte dürfen Zahlen, Strings, Booleans, null
und selbstverständlich auch weitere Objekte
sein — einschließlich Arrays und Funktionen:
const smithFamily = {
joe: { name: 'Joe', age: 42 },
jane: { name: 'Jane', age: 39 },
kids: [
{ name: 'Jean', age: 12 },
{ name: 'John', age: 9 },
],
mothersName: function () {
return this.jane.name;
},
};
Zu Objekten, Arrays und Funktionen gibt es eigene Abschnitte (siehe Objekte, Arrays und Funktionen).
null
null
ist ein Nullwert, der nüztlich ist, um nicht vorhandene oder noch nicht gesetzte Werte
auszudrücken. Dazu ein Beispiel:
// deklariere Objekt mit lastName = null (sozusagen unbekannt)
const joe = { firstName: 'John', lastName: null };
// ... später erhält die Eigenschaft lastName einen konkreten Wert:
joe.lastName = 'Smith';
undefined
undefined
ist der Wert von nicht initialisierten Variablen und der Rückgabewert
von Funktionen ohne return
-Anweisung. Außerdem ergibt der Zugriff auf nicht vorhandene Eigenschaften
von Objekten den Wert undefined
. Im Code sollte undefined
nicht in Zuweisungen verwendet werden,
statt dessen kann null
für Nullwerte eingesetzt werden, um z.B. auszudrücken, dass eine bestimmte
Eigenschaft eines Objektes (noch) keinen Wert hat (siehe Beispiel zu null
oben).
typeof
Mit typeof
kann der Typ eines JavaScript-Ausdrucks ermittelt werden.
typeof 3; // --> "number"
typeof 'Hallo'; // --> "string"
typeof true; // --> "boolean"
typeof { x: 8 }; // --> "object"
Bei null
und Funktionen gibt es spezielle Ergebnisse:
typeof null; // --> "object"
typeof function () {
return 1;
}; // --> "function"
Dass typeof null
den Wert "object"
ergibt, wird als Fehler in der Konzeption der Sprache angesehen.
Bei Funktionen erscheint der Typ "function"
, wodurch klar ist, dass es sich um ein „Funktionsobjekt“ handelt.
Wichtige Unterschiede zu Java
In JavaScript wird nicht zwischen einfachen (elementaren, primitiven) Datentypen
und Referenzdatentypen unterschieden. Außerdem gibt es nur einen numerischen Datentypen,
nämlich number
. Der Datentyp string
wird klein geschrieben und erlaubt "doppelte Anführungszeichen"
,
'einfache Anführungszeichen'
und `Backtick`
als Begrenzer. Es gibt keinen Datentyp für
einzelne Zeichen (char
in Java). null
hat in JavaScript (Nullwert) eine andere Bedeutung als
in Java (Nullreferenz).
Bemerkungen
- Es gibt einen neuen Datentypen
bigint
für beliebig große Zahlen (number
ist auf 253 bzw. -253 beschränkt).bigint
-Zahlen werden mitn
abgeschlossen:1234n
. Noch nicht alle Browser unterstützenbigint
(Anfang 2020) und daher wird dieser Typ hier nicht behandelt. - Es gibt noch einen weiteren „Symbol-Typ“, der hier nicht behandelt wird.