Start · Sprachen · JavaScript · Kapitel · Variablen & Datentypen
// Kapitel · JavaScript

Variablen & Datentypen

Diese Sektion zeigt, wie du Variablen mit const, let und var deklarierst, welche Datentypen JavaScript kennt und wie sich Primitive von Objekt-Referenzen unterscheiden.

Variablen speichern Werte unter einem Namen. In modernem JavaScript deklarierst du sie mit const oder let. var findest du fast nur noch in älterem Code. Den Datentyp hat der Wert, nicht die Variable, denn JS ist dynamisch typisiert.

const, let und var

Mit const kannst du einer Variablen keinen neuen Wert zuweisen, mit let schon. Beide gelten nur innerhalb ihres Blocks. var gilt in der ganzen Funktion und wird gehoisted. Das führt oft zu Fehlern.

const max = 10;
let count = 0;
count += 1;      // ok
// max = 20;     // TypeError

if (true) {
  let inner = 'nur hier';
}
// inner         // ReferenceError

Best Practice: Nimm standardmäßig const. let brauchst du nur, wenn du wirklich neu zuweist.

Primitive Datentypen

Es gibt sieben primitive Typen: string, number, bigint, boolean, undefined, null und symbol. Primitive sind unveränderlich und werden als Wert kopiert.

const name = `Ada`;
const pi = 3.14;
const big = 9007199254740993n;
const aktiv = true;
let leer;            // undefined
const nichts = null;
const id = Symbol('id');

Typen prüfen mit typeof

Der Operator typeof gibt den Typ als String zurück. Bei null und Arrays brauchst du eigene Prüfungen.

typeof 'Hallo';    // 'string'
typeof 42;         // 'number'
typeof undefined;  // 'undefined'
typeof null;       // 'object' (historischer Bug!)
typeof [];         // 'object'
typeof (() => {}); // 'function'

Array.isArray([]); // true
value === null;    // korrekte null-Prüfung

Objekte und Referenzen

Alles, was kein Primitiv ist, ist ein Objekt. Das gilt auch für Arrays und Funktionen. In der Variablen steht dann eine Referenz auf das Objekt. const schützt nur die Bindung, nicht den Inhalt.

const user = { name: 'Ada' };
const alias = user;
alias.name = 'Grace';
console.log(user.name); // 'Grace'

const kopie = { ...user };          // flache Kopie
const tief = structuredClone(user); // tiefe Kopie

Fallstrick: Object.freeze() friert nur die oberste Ebene ein. Verschachtelte Objekte kannst du weiterhin ändern.