Number, String, Boolean – Javascript Datentypen

Javascript Number, String, Boolean

Programme sortieren Schulfreunde nach den Vornamen ihrer Frauen, verwalten Bücher, prüfen Formulare oder animieren Elemente einer Webseite. Dazu arbeitet das Programm mit Daten, die in verschiedenen Datentypen fallen: von Zahlen über Strings oder Zeichenfolgen bis Null oder undefined.

23-02-02 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

Einfache und zusammengesetzte Datentypen

Datentypen geben an, ob die Daten Zahlen (Integer), Zeichenketten (Strings) oder Wahrheitswerte (Boolean) sind, oder zusammengesetzte Javascript Objekte.

Javascript-Datentypen können in drei Kategorien unterteilt werden: einfache (primitive data types), zusammengesetzte (objects) und spezielle Datentypen. Einfache Datentypen sind z.B. Fließkommazahlen wie 5.7 oder Zeichenketten wie "Hallo Welt".

  • special
    • Null
    • Undefined
  • primitives
    • Number
    • String
    • Boolean
    • Symbol
  • objects
    • Object
      • Function
      • Array
      • Date
      • RegExp
      • BigInt

Einfach und doch nicht ganz einfach sind die speziellen Datentypen null und undefined

Number: Integer und Float

Javascript kennt zwei Arten von numerischen Werten: ganze Zahlen und Fließkommazahlen. Alle Zahlen in JavaScript sind 64-Bit mit doppelter Gleitkomma- oder Fließkommagenauigkeit.

Integer speichern ganzzahlige Werte ohne Komma und Dezimalstellen (z.B. 113). Integer können dezimal zur Basis 10, oktal zur Basis 8 und hexadezimal zu Basis 16 dargestellt werden und entweder positiv oder negativ sein. Wie groß ein Integer werden kann, hängt von der Plattform ab (z.B. 10308 oder 10–308 ), aber die Obergrenze wird kaum von einem Script erreicht werden.

let preis = 2;

Fließkommazahlen (Float) enthalten einen Dezimalpunkt (kein Komma!):

let preis = 2.00;

Fließkommazahlen werden mit einen Dezimalpunkt notiert oder als Exponent dargestellt. Der Buchstabe "e" für den Exponenten kann ein kleiner oder ein großer Buchstabe sein.

dot BigInt

BigInt ist ein natives Objekt, das einen BigInt-Wert zurückgibt, eine ganze Zahl, die größer ist als 253 - 1. Das ist die größte Zahl, die Javascript als Number behandeln kann.

BitInt-Werte können nicht mit dem eingebauten Math-Objekt benutzt und nicht mit anderen Number-Werten gemischt werden. Sie werden durch Anhängen eines "n" ans Ende eines Integer-Literals oder durch den Aufruf von BigInt erzeugt.

const bigint = 1234567890123456789012345678901234567890n;
const bigintFromLiteral = BigIng("1234567890123456789012345678901234567890");
const bitintFromNumber  = BigIng("100"); // ist 100n

console.log (100n + 200n); // 300
console.log (50n / 23n);   // 2

BigInt ist ziemlich neu, Unterstützung nur von den immergrünen Browsern, Safari erst ab Version 14.

Javascript Strings

Strings sind Zeichenketten aus Wörtern, Zeichen oder Ziffern, die durch einfache oder doppelte Hochkommas vom Programmcode abgegrenzt sind.

let myString = "Hallo Welt!";

Typische Zeichenketten sind "Heinz Lehmann" und "Vluyn ist eine Stadt knapp 20 KM vor der holländischen Grenze." oder "https://www.mediaevent.de".

Javascript Boolean

Der Datentyp Boolean ist ein logischer Wahrheitswert, der nur einen von zwei Werten annehmen kann: true oder false. Man kann sich die Werte auch als „ja“ oder „nein“ vorstellen. Boolean wird für den Vergleich in Bedingungen eingesetzt: Wenn Werte miteinander verglichen werden, ist das Ergebnis true oder false.

let zahl = 15;

if (zahl > 0) { 
  // Anweisungen
} else {
  // andere Anweisungen
}

Der Ausdruck zahl > 0 liefert true. Wenn zahl im Verlauf des Programms geändert wird und den Wert -1 annimmt, wird der Ausdruck zahl > 0 false.

null und undefined

null ist ein Javascript-Objekt zum Initialisieren und Löschen von Variablen, so dass die Variable nicht länger einen Wert enthält, und der Speicher befreit wird.

let x;
let y = null; 
let z = 200; 
console.log ("x " + x + " y " + y + " z " + z);
x = x * 2;
y = y * 2;
z = z * 2;
console.log ("x " + x + " y " + y + " z " + z);
[Log] x undefined y null z 200 
[Log] x NaN y 0 z 400 

Eine Variable, die deklariert wurde, der aber kein Wert zugewiesen wurde, enthält den Wert undefined. Ihre Benutzung führt nicht zu Laufzeitfehlern, aber zu unbrauchbaren Ergebnissen.

let x;
let z = x + 100; 
if (z) {
    console.log("Es gibt ein z und das ist " + z);
} else {
    console.log("z hat keinen Wert, sondern ist " + z);
}
z hat keinen Wert, sondern ist NaN.

Hingegen führt die Benutzung einer Variablen, die nicht deklariert wurde, zu einem Laufzeitfehler:

console.log (gizmoo);
Firefox ReferenceError: gizmoo is not defined
IE 11, EDGE 'gizmoo' is undefined
Chrome Uncaught ReferenceError: gizmoo is not defined
Safari ReferenceError: Can't find variable: gizmoo

Datentyp konvertieren

JavaScript ist eine dynamisch typisierte Sprache – das bedeutet, dass kein Datentyp bei der Deklaration einer Variablen angegeben wird und der Javascript-Interpreter während der Ausführung des Programms bei Bedarf Datentypen automatisch konvertiert. Die folgende Konstruktion führt dementsprechend nicht zu einem Fehler:

let antwort = 42; 
…
// Zuweisung eines anderen Datentyps an einer 
// anderen Stelle des Programms

antwort = "Warum existiert der Mensch?";

Die Variable antwort enthält bei der Deklaration einen Wert vom Typ Integer. Wenn ihr später im Programm der Stringwert "Warum existiert der Mensch" zugewiesen wird, konvertiert der Javascript-Interpreter den Datentyp von antwort automatisch von Integer zu String.

In Ausdrücken, die numerische Werte und Zeichenketten durch den +-Operator verbinden, konvertiert Javascript numerische Werte zu Zeichenketten:

let frage = "Warum existiert der Mensch? " + 42; 
// gibt "Warum existiert der Mensch? 42" zurück

Bei anderen Operatoren als dem +-Operator konvertiert Javascript numerische Werte nicht in Zeichenketten:

let num = "42" + 2 // gibt 422 zurück
let num = "42" - 2 // gibt 40 zurück

Konventionen

  • Addiert ein Skript einen Integer- und einen Float-Wert, ist das Ergebnis eine Fließkommazahl.
  • Verbindet ein Skript einen numerischen Wert und einen String durch den +-Operator, ist das Ergebnis in String.

Javascript Objekte

Einfache Datentypen wie Integer und Boolean können immer nur einen einzelnen Wert speichern. Zusammengesetzte Datentypen – auch als komplexe Datentypen und im Weiteren als Objekte bezeichnet – können hingegen mehr als eine Komponente speichern.

Objekte sind Sammelbehälter für Daten der unterschiedlichsten Art. Es gibt drei große Gruppen von Javascript-Objekten:

  • Objekte, die Javascript selber zur Verfügung stellt (Array, Boolean, Date, Math, Number, String),
  • Objekte, die der Client-Browser zur Verfügung stellt (Window, Document, ...),
  • Objekte, die der Programmierer konstruiert, z.B. um die Daten eines Adressbuchs oder die Bilder einer Slideshow zu beschreiben.