JavaScript strenger Modus

"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

Probieren Sie es selbst aus

Beispiel

"use strict";
myFunction();
function myFunction() {
     y = 3.14;   // Dies verursacht einen Fehler, weil y noch nicht deklariert wurde
}

Probieren Sie es selbst aus

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
}

Probieren Sie es selbst aus

"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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

Das Löschen von Variablen (oder Objekten) ist nicht erlaubt:

"use strict";
var x = 3.14;
delete x;                // Dies verursacht einen Fehler

Probieren Sie es selbst aus

Das Löschen von Funktionen ist nicht erlaubt:

"use strict";
function x(p1, p2) {}; 
delete x;                 // Dies verursacht einen Fehler

Probieren Sie es selbst aus

Wiederholte Parameternamen sind nicht erlaubt:

"use strict";
function x(p1, p1) {};   // Dies verursacht einen Fehler

Probieren Sie es selbst aus

Oktalzahlen sind nicht erlaubt:

"use strict";
var x = 010;             // Dies verursacht einen Fehler

Probieren Sie es selbst aus

Escape-Zeichen sind nicht erlaubt:

"use strict";
var x = \010;            // Dies verursacht einen Fehler

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

Das Löschen nicht löschbarer Eigenschaften ist nicht erlaubt:

"use strict";
delete Object.prototype; // Dies verursacht einen Fehler

Probieren Sie es selbst aus

Der String "eval" kann nicht als Variable verwendet werden:

"use strict";
var eval = 3.14;         // Dies verursacht einen Fehler

Probieren Sie es selbst aus

Der String "arguments" kann nicht als Variable verwendet werden:

"use strict";
var arguments = 3.14;    // Dies verursacht einen Fehler

Probieren Sie es selbst aus

with Der Satz ist nicht erlaubt:

"use strict";
with (Math){x = cos(2)}; // Dies verursacht einen Fehler

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

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

Probieren Sie es selbst aus

Warnung

"use strict" Anweisungen können nur in Skripten oder FunktionenAnfangErkannt.