const

This is a new technology, part of the ECMAScript 2015 (ES6) standard.
This technology's specification has been finalized, but check the compatibility table for usage and implementation status in various browsers.

Zusammenfassung

Die const-Deklaration erstellt eine Konstante. Gleich wie bei der let-Deklaration ist der Gültigkeitsbereich auf den lokalen Block begrenzt. Der Wert einer Konstanten kann nicht verärdert werden durch Zuweisung oder Neudeklaration.

Syntax

const name1 = wert1 [, name2 = wert2 [, ... [, nameN = wertN]]];
nameN
Name der Konstanten. Dieser kann jeder legale Bezeichner sein.
wertN
Wert der Konstanten. Dieser kann jeder legale Ausdruck sein.

Beschreibung

Die const Deklaration erstellt eine Konstante, die global oder lokal in der Funktion, in der sie deklariert wird, verfügbar ist. Ein Initialisierungswert für die Konstante ist zwingend.

Die const Deklaration erzeugt eine nicht veränderbare Referenz auf einen Wert. Dies bedeutet aber nicht, dass dieser Wert an sich unverärderlich ist, sondern nur, dass der Konstanten kein anderer Wert zugewiesen werden kann. Wenn der Wert einer Konstante z. B. ein Array ist, können dessen Einträge durchaus verändert werden. Die Beispiele unten verdeutlichen dies.

Alles was bei der let Deklaration betreffend "Zeitweilig tote Zonen"  gesagt wurde, gilt ebenfalls für const.

Eine Konstante kann sich den Namen nicht mit einer Funktion oder Variablen im gleichen Gültigkeitsbereich teilen.

Beispiel

Das folgende Beispiel zeigt, wie Konstanten funktionieren. Probieren Sie es in Ihrer Browser-Konsole aus.

// HINWEIS: Konstanten können sowohl mit Klein- wie auch Grossbuchstaben deklariert
// werden. Üblicherweise verwendet man aber Namen mit alles Grossbuchstaben.

// Definiert my_fav als eine Konstante und weist ihr den Wert 7 zu.
const MY_FAV = 7;

// Ein Versuch, der Konstanten einen anderen Wert zuzuweisen, ergibt
// einen Fehler.
MY_FAV = 20;

// Schreibt 7 auf die Konsole.
console.log("my favorite number is: " + MY_FAV);

// Der Versuch, eine existierende Konstante neu zu definieren,
// erzeugt einen Fehler
const MY_FAV = 20;

// Der Name my_fav ist für die obige Konstante reserviert, weshalb
// dieses ebenfalls einen Fehler erzeugt.
var MY_FAV = 20;

// Auch dies ergibt einen Fehler.
let MY_FAV = 20;

// Man beachte, dass const Deklarationen auf Blöcke begrenzt sind.
if (MY_FAV === 7) {
    // Dies funktioniert und erzeugt eine neue Konstante MY_FAV innerhalb
    // des aktuellen Blocks. (Es liesse sich auch mit let eine Variable deklarieren.)
    const MY_FAV = 20;

    // MY_FAV ist nun 20
    console.log("my favorite number is " + MY_FAV);

    // Diese Variable hingegen wird in den globalen Kontext gehoisted und ergibt eine Fehler
    var MY_FAV = 20;
}

// MY_FAV ist immer noch 7
console.log("my favorite number is " + MY_FAV);

// Konstanten benötigten einen Initialwert, weshalb hier ein SyntaxError
// erzeugt wird.
const FOO;

// Konstanten können auch Objekte sein.
const MY_OBJECT = {"key": "value"};

// Ein Versuch, der Konstanten ein anderes Objekt zuzuweisen, ergibt
// einen Fehler.
MY_OBJECT = {"OTHER_KEY": "value"};

// Das Objekt selber hingegen ist nicht vor Veränderungen geschützt.
// Das folgende Statement wird ohne Probleme ausgeführt.
MY_OBJECT.key = "otherValue"; // Verwerde Object.freeze() um ein Objekt unveränderbar zu machen

// Das Gleiche gilt für Arrays
const MY_ARRAY = [];
// Es ist möglich, neue Einträge an das array anzufügen.
MY_ARRAY.push("A"); // ["A"]
// Jedoch der Versuch, der Konstanten ein anderes Array zuzuweisen,
// ergibt einen Fehler.
MY_ARRAY = ["B"]

Spezifikationen

Spezifikation Status   Kommentar
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Let and Const Declarations' in dieser Spezifikation.
Standard  

Initial definition.

ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'Let and Const Declarations' in dieser Spezifikation.
Entwurf    

Browserkompatibilität

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basisfunktionalität 21 (Ja) ? 11 12 5.1

Fehlschlagen beim
Überschreiben

20 (Ja) 13 (13) 11 ? ?
Allowed in sloppy mode 49.0          
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basisfunktionalität Nicht unterstützt (Ja) ? ? (Ja) ? (Ja)

Fehlschlagen beim
Überschreiben

Nicht unterstützt (Ja) ? ? (Ja) 10.0 (Ja)
Allowed in sloppy mode Nicht unterstützt 49.0         49.0

 

Anmerkungen

In frühen Versionen von Firefox und Chrome und seit Safari 5.1.7 und Opera 12.00 kann der Wert einer Konstanten nachträglich geändert werden. Konstanten sind im Internet Explorer 6-10 nicht unterstützt, jedoch wurden sie in Version 11 eingeführt.

Firefox-spezifische Anmerkungen

  • Vor Gecko 46 (Firefox 46 / Thunderbird 46 / SeaMonkey 2.43) wurde ein TypeError anstatt ein SyntaxError erzeugt beim Versuch eine Konstante neu zu deklarieren (Bug 1198833).
  • Begonnen mit Gecko 36 (Firefox 36 / Thunderbird 36 / SeaMonkey 2.33):
    • {const a=1}; erzeugt jetzt einen ReferenceError und gibt nicht mehr 1 wegen des Blockgültigkeitsbereiches zurück.
    • const a; erzeugt jetzt einen SyntaxError ("missing = in const declaration"): Eine Initialisierung wird benötigt.
    • const a = 1; a = 2; erzeugt jetzt einen SyntaxError ("invalid assignment to const a").

See also

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: andreashofer123, fscholz, schlagi123
 Zuletzt aktualisiert von: andreashofer123,