JavaScript strenger Modus
- Vorherige Seite JS Hoisting
- Nächste Seite JS this-Schlüsselwort
"use strict";
definiert, dass der JavaScript-Code im "strengen Modus" ausgeführt werden soll.
"use strict"-Anweisung
"use strict"
Es ist eine neue Anweisung in JavaScript 1.8.5 (ECMAScript version 5).
Es ist kein Statement, sondern ein Literal-Ausdruck, der in älteren Versionen von JavaScript ignoriert wird.
"use strict";
Der Zweck ist es, anzuweisen, dass das JavaScript-Code im "strengen Modus" ausgeführt werden soll.
Im strengen Modus können Sie z.B. keine nicht deklarierten Variablen verwenden.
Die folgenden Browser unterstützen den strengen Modus:
- Ab Version 10 von IE
- Ab Version 4 von Firefox
- Ab Version 13 von Chrome
- Ab Version 5.1 von Safari
- Ab Version 12 von Opera
Die Deklaration des strengen Modus
Durch Hinzufügen von "use strict";
Um den strengen Modus zu deklarieren.
Die Deklaration am Anfang des Skripts hat eine globale Gültigkeit (alle Codezeilen im Skript werden im strengen Modus ausgeführt):
Beispiel
"use strict"; x = 3.14; // Dies verursacht einen Fehler, weil x noch nicht deklariert wurde
Beispiel
"use strict"; myFunction(); function myFunction() { y = 3.14; // Dies verursacht einen Fehler, weil y noch nicht deklariert wurde }
Die Deklaration des strengen Modus in einer Funktion hat eine lokale Gültigkeit (nur der Code innerhalb der Funktion wird im strengen Modus ausgeführt):
x = 3.14; // Dies verursacht keinen Fehler myFunction(); function myFunction() { "use strict"; y = 3.14; // Dies verursacht einen Fehler }
"use strict"-Syntax
Die Syntax der strengen Modus-Declarations wurde so gestaltet, dass sie mit früheren Versionen von JavaScript kompatibel ist.
Das Kompilieren numerischer Texte (z.B. 4+5) oder stringter Texte ("Bill Gates") in JavaScript-Programmen hat keine negativen Auswirkungen. Es wird nur ein nicht existierendes Variable kompiliert und dann verschwinden.
Alle "use strict";
Es beeinflusst nur Compiler, die den Sinn verstehen.
Warum den strengen Modus verwenden?
Der strenge Modus ermöglicht es uns, einfacher "sichere" JavaScript zu schreiben.
Der strenge Modus wandelt früher akzeptierte "schlechte Syntax" in echte Fehler um.
Zum Beispiel wird im regulären JavaScript das Fehlen eines Variablennamens zu einer neuen globalen Variable. Im strengen Modus wird dies einen Fehler verursachen, sodass globale Variablen nicht versehentlich erstellt werden können.
Im regulären JavaScript wird dem Entwickler keine Fehlermeldung ausgegeben, wenn auf nicht schreibbare Eigenschaften zugewiesen wird.
Im strengen Modus wird ein Fehler ausgelöst, wenn Werte auf nicht schreibbare, nur lesbare, nicht vorhandene Eigenschaften oder auf nicht vorhandene Variablen oder Objekte zugewiesen werden.
Verbotene Dinge im strengen Modus
Das Verwenden von Variablen ohne Deklaration ist ebenfalls nicht erlaubt:
"use strict"; x = 3.14; // Dies verursacht einen Fehler
Objekte sind auch Variablen
Das Verwenden von Objekten ohne Deklaration ist ebenfalls nicht erlaubt:
"use strict"; x = {p1:10, p2:20}; // Dies verursacht einen Fehler
Das Löschen von Variablen (oder Objekten) ist nicht erlaubt:
"use strict"; var x = 3.14; delete x; // Dies verursacht einen Fehler
Das Löschen von Funktionen ist nicht erlaubt:
"use strict"; function x(p1, p2) {}; delete x; // Dies verursacht einen Fehler
Wiederholte Parameternamen sind nicht erlaubt:
"use strict"; function x(p1, p1) {}; // Dies verursacht einen Fehler
Oktalzahlen sind nicht erlaubt:
"use strict"; var x = 010; // Dies verursacht einen Fehler
Escape-Zeichen sind nicht erlaubt:
"use strict"; var x = \010; // Dies verursacht einen Fehler
Das Schreiben auf nur lesbare Eigenschaften ist nicht erlaubt:
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // Dies verursacht einen Fehler
Das Schreiben auf nur lesbare Eigenschaften ist nicht erlaubt:
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // Dies verursacht einen Fehler
Das Löschen nicht löschbarer Eigenschaften ist nicht erlaubt:
"use strict"; delete Object.prototype; // Dies verursacht einen Fehler
Der String "eval" kann nicht als Variable verwendet werden:
"use strict"; var eval = 3.14; // Dies verursacht einen Fehler
Der String "arguments" kann nicht als Variable verwendet werden:
"use strict"; var arguments = 3.14; // Dies verursacht einen Fehler
with
Der Satz ist nicht erlaubt:
"use strict"; with (Math){x = cos(2)}; // Dies verursacht einen Fehler
aus Sicherheitsgründen nicht erlaubt eval()
in dem Kontext, in dem es aufgerufen wird, Variablen zu erstellen:
"use strict"; eval ("var x = 2"); alert (x); // Dies verursacht einen Fehler
Im Aufruf ähnlich f() ist der Wert von this das globale Objekt. In strenger Modus ist es jetzt undefined
.
Garantie für die Zukunft
Es sind keine für die Zukunft vorgesehenen Schlüsselwörter in strenger Modus erlaubt. Diese sind:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // Dies verursacht einen Fehler
Warnung
"use strict"
Anweisungen können nur in Skripten oder FunktionenAnfangErkannt.
- Vorherige Seite JS Hoisting
- Nächste Seite JS this-Schlüsselwort