Der „Strict-Mode“ dient dazu sicheren JavaScript-Code zu schreiben. Normalerweise ist JavaScript sehr tolerant bei der Erstellung von unsauberen Quellcode. Dazu zählt z. B. die Verwendung von Variablen ohne Deklaration, das Löschen von verwendeten Variablen, Objekten und Funktionen oder das Duplizieren von Funktions-Parametern. Im „Strict-Mode“ hält der Interpreter hingegen in solchen Fällen an. Durch den „Strict-Mode“ werden damit die Programmierer gezwungen sicheren JavaScript-Code zu schreiben.
Der „Strict-Mode“ wird in folgenden Browsern unterstützt:
Mit der Direktive „use strict“ wird der „Strict-Mode“ aktiviert. Die Direktive muss dabei immer am Anfang des entsprechenden Codeblocks stehen, für den der „Strict-Mode“ verwendet werden soll. Der „Strict-Mode“ kann dabei auch nur für einzelne Unterfunktion verwendet werden:
HTML-Datei:
Ergebnis:
a1 =
b1 =
c1 =
d1 =
(Hier wurde die "use strict"-Direktive nicht an den Anfang gesetzt, weshalb der Strict-Mode nicht angewendet wird)
In manchen Fällen bei denen unerlaubte Ausdrücke im „Strict-Mode“ verwendet werden, wird die Abarbeitung durch den Interpreter von Anfang an unterbunden. In diesen Fällen ist es notwendig, für den Code-Bereich, für den der „Strict-Mode“ verwendet werden soll, mit dem „script“-Element einen eigenen Bereich zu definieren:
HTML-Datei:
Ergebnis:
a2 =
Interpreter-Status: Abgebrochen!
c2 =
Interpreter-Status: Abgebrochen!
Die Verwendung von Variablen und Objekten ohne Deklaration ist im „Strict-Mode“ nicht erlaubt:
HTML-Datei:
Ergebnis:
a3 =
obj31.b =
c3 =
obj32.d =
Das Löschen von deklarierten Variablen, Objekten und Funktionen ist im „Strict-Mode“ nicht erlaubt:
HTML-Datei:
Ergebnis:
a4 + obj41.b + myFunc41() =
Interpreter-Status: Abgebrochen!
c4 + obj42.d + myFunc42() =
Interpreter-Status: Abgebrochen!
Die mehrfache Verwendung von den selben Funktionsparamtern ist im „Strict-Mode“ nicht erlaubt:
HTML-Datei:
Ergebnis:
myFunc51(1, 2) =
Interpreter-Status: Abgebrochen!
myFunc52(3, 4) =
Interpreter-Status: Abgebrochen!
Das Verwenden von Oktalzahlen als Variablenwerte oder in Verbindung mit „Escape“-Zeichen ist im „Strict-Mode“ nicht erlaubt:
HTML-Datei:
Ergebnis:
a6 =
b6 =
Interpreter-Status: Abgebrochen!
c6 =
d6 =
Interpreter-Status: Abgebrochen!
Das Schreiben von Werten in Eigenschaften und Methoden, die nur zur Ausgabe von Werten definiert wurden, ist im „Strict-Mode“ nicht erlaubt:
HTML-Datei:
Ergebnis:
obj71.a =
obj71.out() =
Interpreter-Status: Abgebrochen!
obj72.a =
obj72.out() =
Interpreter-Status: Abgebrochen!
Das Löschen der Eigenschaft „prototype“ ist im „Strict-Mode“ nicht erlaubt. Das Löschen anderer Eigenschaften wird ignoriert und führt auch im „Strict-Mode“ zu keinem Abbruch. Das Löschen von Methoden führt in jedem Fall zum Abbruch:
HTML-Datei:
Ergebnis:
Die Verwendung verschiedener Schlüsselwörter als Variablennamen ist im „Strict-Mode“ nicht erlaubt. Dazu zählen u. a. „arguments“, „implements“, „interface“, „let“, „package“, „private“, „protected“, „public“, „static“, „yield“. Die Verwendung anderer Schlüsselwörter wie „if“ oder „new“ als Variablennamen führt in beiden Modi zu einem Abbruch:
HTML-Datei:
Ergebnis:
arguments =
Interpreter-Status: Abgebrochen!
break =
Interpreter-Status: Abgebrochen!
arguments =
Interpreter-Status: Abgebrochen!
Als Abschlussübung kannst du folgendes Beispiel erstellen:
args =
Interpreter-Status: Abgebrochen!
myVar =
Interpreter-Status: Abgebrochen!
add(2, 3) =
Interpreter-Status: Abgebrochen!
Gehe dabei wie folgt vor:
Die Lösung kannst du dir hier herunterladen: