Konstanten in JavaScript unter Firefox 49
Konstanten in der Konsole
Falls ein neues Skript mit Konstantendeklarationen in die Konsole eingegeben werden soll, kann es hilfreich sein, zuerst mit F5 davor zu sorgen, daß alle vorherigen Konstantendeklarationen wieder vergessen werden, da es sonst bei der Deklaration schon früher einmal deklarierter Konstanten zu Fehlermeldungen kommen kann.
»print« (und andere Wörter?) in der Konsole
Einige Wörter lassen sich in der Konsole nicht immer als Konstanten definieren, darunter »print«.
- Konsolenprotokoll
"use strict";
const alpha = 1;
const print = 2;
console.log( alpha );
console.log( print );1
function bound ()
»print« scheint ein vordefinierter Name zu sein, der in manchen Fällen nicht umdefiniert werden kann. Es war bisher auch nicht möglich, ihn genau einer bestimmten Umgebung (wie dem globalen Verzeichnis oder der lexikalischen Umgebung) zuzuordnen. (Eventuell wurde »print« in neueren Versionen von Firefox entfernt, aber dort könnte es trotzdem noch einige solcher Wörter geben.)
- Quelle *
https://developer.mozilla.org/en-US/docs/Tools/Web_Console/Helpers
Das Hissen in Quelltexteinheiten
In der Konsole gilt eine Zeile als Quelltexteinheit. (Die „Zeile“ kann mit Umschalt-Eingabe auch auf mehrere Zeilen umbrochen werden.)
Konstatendeklarationen werden in Quelltexteinheiten „gehißt“, das heißt, sie werden vorverlagert. Damit sind sie dann schon vor ihrer Deklaration bekannt, aber sie dürfen erst ab der Stelle ihrer Deklaration verwendet werden.
- Konsolenprotokoll
a = 5
- Konsolenprotokoll
a
5
- Konsolenprotokoll
a; const a = 2
ReferenceError: can't access lexical declaration `a' before initialization
In der QET (QuelltExteinheiE) »a; const a = 2« wird »a« bereits von Anfang an als Konstante angesehen, obwohl die Deklaration erst später folgt. »a« darf aber erst nach der Deklaration verwendet werden.
- Konsolenprotokoll
a
undefined
Durch den Fehler in der vorigen QET wurde die Zuweisung eines Wertes an »a« nicht vollzogen, da die Ausführung der QET nach dem Fehler abgebrochen wurde.
Der Versuch, »a« erneut zu deklarieren, zeigt aber, daß »a« aufgrund des Hissens schon als deklariert gilt, es hat aber den Wert «undefined».
- Konsolenprotokoll
const a = 3
SyntaxError: redeclaration of const a
Konstanten in Web-Seiten
Wenn eine Konstante in einem script-Element eines Programmes definiert wird, so ist sie auch in folgenden script-Elementen vorhanden, wie das folgende Programm zeigt, da alle script-Elemente Quelltexteinheiten eines einzigen Skripts sind.
- Programm
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<title>Main</title><style type="text/css"></style></head><body>
<pre><code><script>/*<![CDATA[*/
const x = 8;
/*]]>*/</script></head><body>
<h1>Globale Konstanten</h1>
<pre><code><script>/*<![CDATA[*/"use strict";alert( x );
/*]]>*/</script></code></pre></body></html>
- Ausgabe
.-----------------------.
| |
| 8 |
| |
| .----. |
| | OK | |
| '----' |
'-----------------------'