Im strikten Modus werden Fehler beseitigt, die im nicht-strikten Modus ignoriert werden würden, wodurch Javascript "sicherer" wird.
Gehört sie zu den besten Praktiken?
Sí Es gehört zu den besten Praktiken bei der Arbeit mit Javascript, die folgenden Elemente einzubeziehen Strenger Modus . Dies geschieht durch Hinzufügen der folgenden Codezeile in Ihre JS-Datei.
'use strict';
in Ihrem Code.
Was bedeutet das für die Benutzeragenten?
Die Angabe, dass Code im strikten Modus interpretiert werden soll, bedeutet für Benutzeragenten wie Browser, dass sie den Code wörtlich so behandeln sollen, wie er geschrieben wurde, und einen Fehler ausgeben, wenn der Code keinen Sinn ergibt.
Zum Beispiel: Berücksichtigen Sie in Ihrem .js
Datei haben Sie den folgenden Code:
Szenario 1: [KEIN STRENGER MODUS]
var city = "Chicago"
console.log(city) // Prints the city name, i.e. Chicago
Szenario 2: [KEIN STRENGER MODUS]
city = "Chicago"
console.log(city) // Prints the city name, i.e. Chicago
Warum wird der Variablenname dann in beiden Fällen gedruckt?
Wenn der Strict Mode nicht aktiviert ist, müssen Benutzeragenten oft eine Reihe von Änderungen an problematischem Code vornehmen, um ihn sinnvoll zu gestalten. Oberflächlich betrachtet kann dies eine gute Sache sein, und in der Tat ermöglicht es die Arbeit außerhalb des Strict-Modus den Leuten, sich mit JavaScript-Code vertraut zu machen, ohne alle Details genau zu kennen. Als Entwickler möchte ich jedoch keinen Fehler in meinem Code hinterlassen, weil ich weiß, dass er später wieder auftauchen und mich beißen könnte, und ich möchte auch einfach guten Code schreiben. Und genau dabei hilft der Strict-Modus.
Szenario 3: [STRENGER MODUS]
'use strict';
city = "Chicago"
console.log(city) // Reference Error: asignment is undeclared variable city.
Zusätzlicher Tipp: Um die Codequalität im Strict-Modus aufrechtzuerhalten, müssen Sie dies nicht immer wieder schreiben, insbesondere wenn Sie mehrere .js
Datei. Sie können diese Regel global in eslint
Regeln wie folgt:
Dateiname: .eslintrc.js
module.exports = {
env: {
es6: true
},
rules : {
strict: ['error', 'global'],
},
};
Okay, was wird also im strengen Modus verhindert?
-
Eine Variable verwenden, ohne sie zu deklarieren wird im Strict-Modus einen Fehler auslösen. Damit soll verhindert werden, dass ungewollt globale Variablen in der gesamten Anwendung erstellt werden. Das Beispiel mit dem Drucken von Chicago deckt dies im Besonderen ab.
-
Löschen einer Variablen, einer Funktion oder eines Arguments ist im strikten Modus nicht zulässig.
"use strict";
function x(p1, p2) {};
delete x; // This will cause an error
-
Duplizieren eines Parameternamens es no im strengen Modus erlaubt.
"use strict";
function x(p1, p1) {}; // This will cause an error
-
Reservierte Wörter in der Javascript-Sprache sind nicht erlaubt im strengen Modus. Die Wörter sind implements interface, let, packages, private, protected, public, static und yield
Eine ausführlichere Liste finden Sie in der MDN-Dokumentation hier: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode
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.