This is an experimental technology, part of the ECMAScript 6 (Harmony) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.
Zusammenfassung
Die const-Deklaration erstellt eine benamte Konstante (nur lesender Zugriff)
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
Diese Deklaration erstellt eine Konstante, die global oder lokal in der Funktion, in der sie deklariert wird, verfügbar ist. Der Gültigkeitsbereich von Konstanten ist auf Blöcke beschränkt. Der Wert einer Konstanten kann nicht überschrieben werden und eine Konstante kann nicht mehrfach deklariert werden. Eine Initialisierung ist für eine Konstante vorausgesetzt. 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.
// Definiert my_fav als eine Konstante und weist ihr den Wert 7 zu.
const my_fav = 7;
// Das Überschreiben wird in Firefox und Chrome ignoriert.
// (Schlägt jedoch nicht in Safari fehl.)
// (Erzeugt einen SyntaxError
ab Gecko 36.)
my_fav = 20;
// gibt 7 aus
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;
// my_fav ist immer noch 7
console.log("my favorite number is " + my_fav);
// Konstanten benötigten einen Initialwert, weshalb ein SyntaxError
// erzeugt wird.
const foo;
// Konstanten können auch Objekte sein.
const myObject = {"key": "value"};
// Das Überschreiben wird nicht beachtet
// (in Firefox und Chrome, aber nicht in Safari)
myObject = {"otherKey": "value"};
// Immer, wenn die Attribute eines Objektes nicht geschützt sind,
// können diese überschrieben werden.
// Aus diesem Grund wird diese Zeile ohne Probleme ausgeführt.
myObject.key = "otherValue";
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
ECMAScript 6 (ECMA-262) Die Definition von 'Let and Const Declarations' in dieser Spezifikation. |
Anwärter Empfehlung | Initial definition. |
Browserkompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basisfunktionalität | ? | ? | IE11 | 12.00 (vielleicht früher) | 5.1.7 (vielleicht früher) |
Fehlschlagen beim |
20 | 13 (13) | IE11 | ? | ? |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basisfunktionalität | ? | ? | ? | ? | ? | ? |
Fehlschlagen beim |
? | ? | ? | ? | ? | ? |
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
Die const
-Deklaration wurde in Firefox schon implementiert, bevor const
ein Teil der ECMAScript 6 Spezifikation war. Für die const
-ES6-Erfüllung siehe Bug 950547 und Bug 611388.
- Begonnen mit Gecko 36 (Firefox 36 / Thunderbird 36 / SeaMonkey 2.33):
{const a=1};
erzeugt jetzt einenReferenceError
und gibt nicht mehr 1 wegen des Blockgültigkeitsbereiches zurück.const a;
erzeugt jetzt einenSyntaxError
("missing = in const declaration"
): Eine Initialisierung wird benötigt.const a = 1; a = 2;
erzeugt jetzt einenSyntaxError
("invalid assignment to const a").