Konstante const
const maxspeed = 130;
Während sich der Wert einer klassischen Variable jederzeit ändern kann, gibt es Werte, die über die gesamte Laufzeit des Programms stabil bleiben sollen. Hierfür nutzt man Konstanten, die mit dem Schlüsselwort const deklariert werden. Doch Obacht: Konstante bedeutet in JavaScript nicht zwingend, dass der Inhalt absolut unveränderlich ist. Der entscheidende Unterschied liegt darin, was geschützt ist: Der Wert selbst oder die Variable (die Zuweisung)?
Hier ist die goldene Regel für JavaScript:
-
let erlaubt es dir, die Zuweisung zu verändern (Re-assignment).
-
const verbietet eine neue Zuweisung. Es schützt aber nicht den Inhalt von Objekten oder Arrays.
Schauen wir uns das genauer an.
1. Primitive Datentypen (Verhält sich wie PHP)
Bei einfachen Datentypen (Strings, Zahlen, Booleans) verhält sich const genau so, wie du es von PHP-Konstanten (define oder const) erwartest: Der Wert kann nicht geändert werden.
const name = "Marcel"; name = "Jan"; // ❌ Fehler: Assignment to constant variable. let alter = 28; alter = 29; // Erlaubt, da mit 'let' deklariert.
2. Komplexe Datentypen: Der JavaScript-Kniff (Arrays & Objekte)
Hier entsteht meistens die Verwirrung. In JavaScript speichert eine Variable bei Objekten und Arrays und arrayähnlichen Objekten wie NodeLists und HTMLCollections nicht den tatsächlichen Inhalt, sondern nur eine Referenz (eine Art Speicheradresse), die auf diesen Inhalt zeigt.
Wenn du const für ein Array oder Objekt nutzt, sagst du JavaScript nur: "Diese Variable muss immer auf genau dieses Array/Objekt zeigen." Was innerhalb des Arrays oder Objekts passiert, ist const völlig egal.
Beispiel mit einem Array:
const einkaufsliste = ["Brot", "Milch"];
// Erlaubt: Wir ändern den INHALT des Arrays, nicht die Zuweisung.
einkaufsliste.push("Kaffee");
console.log(einkaufsliste); // ["Brot", "Milch", "Kaffee"]
// ❌ Verboten: Wir versuchen, der Variable ein komplett NEUES Array zuzuweisen.
einkaufsliste = ["Apfel", "Birne"]; // Fehler!
Beispiel mit einem Objekt:
const user = { name: "Marcel", rolle: "Admin" };
// Erlaubt: Eine Eigenschaft (Property) des Objekts ändern oder hinzufügen.
user.rolle = "User";
user.alter = 30;
// ❌ Verboten: Das Objekt komplett austauschen.
user = { name: "Jan" }; // Fehler!
Der Vergleich zu PHP
In PHP sind Konstanten (const oder define()) standardmäßig "immutable" (unveränderlich). Wenn du in PHP ein Array als Konstante definierst, kannst du nachträglich keine Elemente hinzufügen.
JavaScript hat dafür von Haus aus keinen direkten Befehl bei der Variablendeklaration. Wenn du in JavaScript ein Objekt oder Array wirklich bombenfest einfrieren willst (so wie in PHP), musst du JavaScript explizit darum bitten:
const user = { name: "Marcel" };
Object.freeze(user); // Friert das Objekt ein!
user.name = "Jan"; // Wird im Strict-Mode einen Fehler werfen, ansonsten einfach ignoriert.
console.log(user.name); // Bleibt "Marcel"
Zusammenfassung: Wann nutze ich was?
-
Nutze const standardmäßig für alles. Wenn du ein Array oder ein Objekt erstellst, nimm const.
-
Nutze let nur dann, wenn du ganz genau weißt, dass sich der Wert der Variable im Verlauf des Codes komplett ändern muss (z. B. bei Zählschleifen oder mathematischen Berechnungen wie score = score + 10).