"use strict"
macht JavaScript-Code zur Ausführung in strenger Modus Das bedeutet, dass alles vor der Verwendung definiert werden muss. Der Hauptgrund für die Verwendung des Strict-Modus ist die Vermeidung versehentlicher globaler Verwendungen von nicht definierten Methoden.
Auch im Strict-Modus laufen die Dinge schneller, einige Warnungen oder stille Warnungen werfen fatale Fehler, es ist besser, es immer zu benutzen, um einen saubereren Code zu machen.
"use strict"
ist für die Verwendung in ECMA5 weithin erforderlich, in ECMA6 ist es standardmäßig Teil von JavaScript Es muss also nicht hinzugefügt werden, wenn Sie ES6 verwenden.
Sehen Sie sich diese Aussagen und Beispiele von MDN an:
Die "use strict"-Richtlinie
Die "use strict"-Anweisung ist neu in JavaScript 1.8.5 (ECMAScript Version 5). Es handelt sich nicht um eine Anweisung, sondern um einen literaler Ausdruck, der von früheren Versionen von JavaScript ignoriert wurde. Der Zweck von "use strict" ist es, anzuzeigen, dass der Code im im "Strict-Modus" ausgeführt werden soll. Im strikten Modus können Sie z. B. keine nicht deklarierte Variablen verwenden.
Beispiele für die Verwendung von "use strict":
Strenger Modus für Funktionen: Um den strikten Modus für eine Funktion aufzurufen Funktion aufzurufen, fügen Sie die genaue Anweisung "use strict"; (oder 'use strict';) in vor allen anderen Anweisungen in den Körper der Funktion ein.
1) Strict-Modus in Funktionen
function strict() {
// Function-level strict mode syntax
'use strict';
function nested() { return 'And so am I!'; }
return "Hi! I'm a strict mode function! " + nested();
}
function notStrict() { return "I'm not strict."; }
console.log(strict(), notStrict());
2) Strict-Modus für das gesamte Skript
'use strict';
var v = "Hi! I'm a strict mode script!";
console.log(v);
3) Zuweisung zu einem nicht beschreibbaren Global
'use strict';
// Assignment to a non-writable global
var undefined = 5; // throws a TypeError
var Infinity = 5; // throws a TypeError
// Assignment to a non-writable property
var obj1 = {};
Object.defineProperty(obj1, 'x', { value: 42, writable: false });
obj1.x = 9; // throws a TypeError
// Assignment to a getter-only property
var obj2 = { get x() { return 17; } };
obj2.x = 5; // throws a TypeError
// Assignment to a new property on a non-extensible object.
var fixed = {};
Object.preventExtensions(fixed);
fixed.newProp = 'ohai'; // throws a TypeError
Sie können mehr lesen auf MDN .
73 Stimmen
Die Antworten hier sind alt, aber sie sind falsch. Der Hauptgrund für den Strict-Modus war nicht, um Programmierfehler zu verhindern - es war, JavaScript lexikalisch skaliert zu machen, so dass es statisch analysierbar sein könnte :]
5 Stimmen
Und der Grund für die seltsame Syntax (magische Zeichenkette als Anweisung) ist die Abwärtskompatibilität mit älteren JavaScript-Engines. Die Idee des strengen Modus ist es, einige problematische JavaScript-Sprachkonstrukte zu verbieten, aber die Interpretation des Codes nicht zu ändern, so dass die Ausführung identisch ist, unabhängig davon, ob die JavaScript-Engine den strengen Modus tatsächlich unterstützt oder nicht.