"use strict"; Legt fest , dass JavaScript - Code sollte in "Strict - Modus" ausgeführt werden.
Die "use strict" Richtlinie
Die "use strict" Richtlinie ist neu in JavaScript 1.8.5 (ECMAScript version 5) .
Es ist keine Aussage, sondern eine wörtliche Ausdruck, die von früheren Versionen von JavaScript ignoriert.
Der Zweck von "use strict" ist , um anzuzeigen , dass der Code sollte in "Strict - Modus" ausgeführt werden.
Mit strengen Modus können Sie zum Beispiel nicht, verwenden Sie nicht deklarierte Variablen.
Strict-Modus wird unterstützt in:
IE ab Version 10. Firefox ab Version 4.
Chrome ab Version 13. Safari ab Version 5.1.
Opera ab Version 12.
Deklarieren Strict-Modus
Strict - Modus wird durch das Hinzufügen erklärt "use strict"; zu Beginn eines Skripts oder einer Funktion.
Erklärt am Anfang eines Skripts, es hat globale Reichweite (alle Code in das Skript im strikten Modus ausgeführt wird):
Beispiel
"use strict";
myFunction();
function myFunction() {
y = 3.14;
// This will also cause an error (y is not defined)
}
Versuch es selber " Erklärt in einer Funktion, hat es lokalen Bereich (nur der Code innerhalb der Funktion im strikten Modus ist):
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14;
// This will cause an error (y is not defined)
}
Versuch es selber " Die "use strict"; Syntax
Die Syntax, für die Erklärung der strikten Modus wurde entwickelt, um mit älteren Versionen von JavaScript kompatibel zu sein.
Kompilieren eines Zahlenliteral (4 + 5;) oder eine Stringliteral ("John Doe";) in einem JavaScript - Programm hat keine Nebenwirkungen. Es kompiliert lediglich eine nicht vorhandene Variable und stirbt.
So "use strict" ; nur wichtig, um neue Compiler, dass "verstehen" die Bedeutung davon.
Warum Strict-Modus?
Strict-Modus macht es leichter zu schreiben "sicheren" JavaScript.
Strict-Modus Änderungen zuvor akzeptiert "schlechte Syntax" in echte Fehler.
eine neue globale Variable Als Beispiel in normalen JavaScript, erstellt einen Variablennamen Tippfehler. Im strikten Modus wird dies auf einen Fehler werfen, ist es unmöglich, versehentlich schaffen eine globale Variable zu machen.
Im normalen JavaScript, erhalten ein Entwickler werden keine Fehler Feedback Werte nicht beschreibbaren Eigenschaften zuweisen.
Im strikten Modus jede Zuordnung zu einem nicht beschreibbaren Eigenschaft, ein Getter-Unterkunft, die nur eine nicht vorhandene Eigenschaft, eine nicht vorhandene Variable oder ein nicht vorhandenes Objekt, wirft einen Fehler.
Nicht erlaubt in Strict-Modus
Mit Hilfe einer variablen, ohne es zu erklären, ist nicht erlaubt:
"use strict";
x = 3.14; // This
will cause an error (x is not defined)
Die Objekte sind zu Variablen.
Mit einem Objekt, ohne es zu erklären, ist nicht erlaubt:
"use strict";
x =
{p1:10, p2:20}; // This
will cause an error (x is not defined)
Löschen einer Variable (oder Objekt) ist nicht erlaubt.
"use strict";
var x = 3.14;
delete x; // This
will cause an error
Das Löschen ist eine Funktion nicht erlaubt.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
einen Parameternamen Duplizierung ist nicht erlaubt:
"use strict";
function x(p1, p1) {}; // This will cause an error
Octal Zahlenliterale sind nicht zulässig:
"use strict";
var x = 010; // This
will cause an error
Escape-Zeichen sind nicht erlaubt:
"use strict";
var x = \010; // This will cause an error
Schreiben in eine schreibgeschützte Eigenschaft ist nicht erlaubt:
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
Das Schreiben in einem Get-only-Eigenschaft ist nicht erlaubt:
"use strict";
var obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
eine nicht löschbare Eigenschaft Löschen ist nicht erlaubt:
"use strict";
delete Object.prototype; // This will cause an error
Der String "eval" kann nicht als eine Variable verwendet werden:
"use strict";
var eval = 3.14; // This will cause an error
Die Zeichenfolge "Argumente" kann nicht als Variable verwendet werden:
"use strict";
var arguments = 3.14; // This will cause an error
Die Anweisung with ist nicht erlaubt:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
Aus Sicherheitsgründen wird eval() nicht zu schaffen Variablen im Umfang erlaubt , von dem es hieß:
"use strict";
eval ("var x = 2");
alert (x); // This
will cause an error
In Funktionsaufrufen wie f() , war der dieser Wert das globale Objekt. Im strikten Modus wird es jetzt nicht definiert.
Zukunftssicher!
Zukünftige reservierte Schlüsselwörter sind nicht im strikten Modus erlaubt. Diese sind:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict";
var public = 1500; // This will cause an error
Achtung!
Achtung!
Die "use strict" Richtlinie wird erst am Anfang eines Skripts oder einer Funktion erkannt.