Eigentlich ist es keine Überraschung, wenn eine Programmiersprache Konstanten unterstützt. Bei Javascript bin ich zuvor aber nie darüber gestolpert: const
.
Chrome- und Firefox-Verhalten nicht konstant
Ich habe mal einen kleinen Test in Chrome und Firefox gemacht. Im Normalfall verhalten sich beide, wie man es erwartet. Versucht man jedoch nachträglich eine Variable in eine Konstante zu verwandeln, reagieren die beiden unterschiedlich: Chrome ignoriert das „const“ und setzt den neuen Wert, während Firefox einen Fehler meldet und den neuen Wert ignoriert. Zumindest bleibt in beiden Fällen eine Variable variabel.
const a = 1; a = 2; console.log(a); // 1 const b = { b : 2 }; b = 3; console.log(b); // Object { b=2} var c = 3; const c = 4; // Chrome: okay / FF: "TypeError: redeclaration of var c" console.log(c); // Chrome: 4 / FF: 3 c = 5; console.log(c); // 5
Scoping wie bei var
Bei der Sichtbarkeit verhält sich const
genau wie var
: Konstanten sind innerhalb von Funktionen beliebig tief sichtbar, außerhalb jedoch nicht.
(function() { const c1 = 1; console.log(c1); }()); // 1 console.log(c1); // ReferenceError: c1 is not defined
Ohne Scope werden Konstanten wie auch Variablen eine Eigenschaft des aktuellen Windows:
const c2 = 2; console.log(window.c2); // 2
Gehört das nicht zu den reservierten Wörtern… ?
Ja bestimmt, wieso?
Ich meinte zu den für die Zukunft vorgesehen Wörtern:
https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words
Was ich meine: Konstanten sind ja bereits implementiert. Folglich muss
const
doch auch ein reserviertes Wort sein, oder nicht? Wäre sonst bestimmt schwierig rauszufinden, ob ein const nun eine Variable oder das Sprachfeature ist…Aber ich verstehe nicht, worauf du hinaus willst. Meinst du, dass die da so ein Herstellerprefix verwenden sollten?
-moz-const
und so?Jedenfalls voll irritierend, jetzt hintenrum noch Block-Scopes in JS einzuführen. Da hat man sich gerade so schön an den Funktionsmissbrauch gewöhnt…
Ich wollte damit nur sagen, dass es noch viele andere reservierte Wörter gibt, die aber teilweise noch gar keine Bedeutung/Verwendung haben…
Mit „Gehört das nicht zu den reservierten Wörtern… ?” meinst du, „dass es noch viele andere reservierte Wörter gibt, die aber teilweise noch gar keine Bedeutung/Verwendung haben…“? Ich geb’s auf 😉