Strict-Mode

Was ist der „Strict-Mode“?

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:

  • IE ab Version 10
  • Firefox ab Version 4
  • Chrome ab Version 13
  • Safari ab Version 5.1
  • Opera ab Version 12

Die „use strict“-Direktive

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:

Beispiel 1

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:

Beispiel 2

a2 =
Interpreter-Status: Abgebrochen!

c2 =
Interpreter-Status: Abgebrochen!

Limitierungen durch den „Strict-Mode“

Verwendung ohne Deklaration

Die Verwendung von Variablen und Objekten ohne Deklaration ist im „Strict-Mode“ nicht erlaubt:

HTML-Datei:

Ergebnis:

Beispiel 3

a3 =
obj31.b =

c3 =
obj32.d =

Löschen deklarierter Variablen, Objekte und Funktionen

Das Löschen von deklarierten Variablen, Objekten und Funktionen ist im „Strict-Mode“ nicht erlaubt:

HTML-Datei:

Ergebnis:

Beispiel 4

a4 + obj41.b + myFunc41() =
Interpreter-Status: Abgebrochen!

c4 + obj42.d + myFunc42() =
Interpreter-Status: Abgebrochen!

Duplizieren von Funktions-Parametern

Die mehrfache Verwendung von den selben Funktionsparamtern ist im „Strict-Mode“ nicht erlaubt:

HTML-Datei:

Ergebnis:

Beispiel 5

myFunc51(1, 2) =
Interpreter-Status: Abgebrochen!

myFunc52(3, 4) =
Interpreter-Status: Abgebrochen!

Verwendung von Oktalzahlen

Das Verwenden von Oktalzahlen als Variablenwerte oder in Verbindung mit „Escape“-Zeichen ist im „Strict-Mode“ nicht erlaubt:

HTML-Datei:

Ergebnis:

Beispiel 6

a6 =
b6 =
Interpreter-Status: Abgebrochen!

c6 =
d6 =
Interpreter-Status: Abgebrochen!

Schreiben in „read-only“ Eigenschaften und Methoden

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:

Beispiel 7

obj71.a =
obj71.out() =
Interpreter-Status: Abgebrochen!

obj72.a =
obj72.out() =
Interpreter-Status: Abgebrochen!

Löschen der Eigenschaft „prototype“

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:

Schlüsselwörter als Variablennamen

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:

Beispiel 9

arguments =
Interpreter-Status: Abgebrochen!

break =
Interpreter-Status: Abgebrochen!

arguments =
Interpreter-Status: Abgebrochen!

Abschlussübung

Als Abschlussübung kannst du folgendes Beispiel erstellen:

Beispiel 10

args =
Interpreter-Status: Abgebrochen!


myVar =
Interpreter-Status: Abgebrochen!


add(2, 3) =
Interpreter-Status: Abgebrochen!

Gehe dabei wie folgt vor:

  • Erstelle aus dem Quellcode in den Textfeldern drei Funktionen mit jeweils einem eigenen „script“-Bereich
  • Gebe den Button jeweils das „onclick“-Attribut, das auf die entsprechende Funktion verweist
  • Versuche das Ergebnis zu erraten, bevor du den jeweiligen Button anklickst

Die Lösung kannst du dir hier herunterladen:

Download
StrictMode10.html
HTML Dokument 2.0 KB

Quellen