Lange Zeit entwickelte sich JavaScript ohne Kompatibilitätsprobleme. Neue Funktionen wurden der Sprache hinzugefügt, während sich die alte Funktionalität nicht änderte.
Das hatte den Vorteil, dass vorhandener Code nicht gebrochen wurde. Aber der Nachteil war, dass jeder Fehler oder eine unvollkommene Entscheidung, die von den Entwicklern von JavaScript getroffen wurde, für immer in der Sprache stecken blieb.
Dies war der Fall bis 2009, als ECMAScript 5 (ES5) erschien. Es fügte der Sprache neue Funktionen hinzu und modifizierte einige der bestehenden. Damit der alte Code weiterhin funktioniert, sind die meisten dieser Modifikationen standardmäßig deaktiviert. Sie müssen sie explizit mit einer speziellen Direktive aktivieren: "use strict"
.
„use strict“
Die Direktive sieht aus wie ein String: "use strict"
oder 'use strict'
. Wenn es sich am Anfang eines Skripts befindet, funktioniert das ganze Skript auf „moderne“ Weise.
Zum Beispiel:
"use strict";// this code works the modern way...
In Kürze werden wir Funktionen lernen (eine Möglichkeit, Befehle zu gruppieren), also lassen Sie uns im Voraus festhalten, dass "use strict"
an den Anfang einer Funktion gesetzt werden kann. Dadurch wird der Strict-Modus nur in dieser Funktion aktiviert. Normalerweise wird es aber für das ganze Skript verwendet.
Bitte stellen Sie sicher, dass "use strict"
ganz oben in Ihren Skripten steht, sonst wird der Strict-Modus möglicherweise nicht aktiviert.
Der Strict Mode ist hier nicht aktiviert:
alert("some code");// "use strict" below is ignored--it must be at the top"use strict";// strict mode is not activated
Nur Kommentare dürfen über "use strict"
erscheinen.
use strict
Es gibt keine Direktive wie "no use strict"
, die die Engine auf das alte Verhalten zurücksetzt.
Wenn wir einmal in den Strict-Modus gehen, gibt es kein Zurück mehr.
Browser-Konsole
Wenn Sie eine Entwicklerkonsole verwenden, um Code auszuführen, beachten Sie bitte, dass diese nicht use strict
standardmäßig funktioniert.
Manchmal, wenn use strict
einen Unterschied macht, erhalten Sie falsche Ergebnisse.
So, wie man eigentlich use strict
in der Konsole?
Zunächst können Sie versuchen, Shift+Enter zu drücken, um mehrere Zeilen einzugeben, und use strict
an den Anfang zu stellen, etwa so:
'use strict'; <Shift+Enter for a newline>// ...your code<Enter to run>
Das funktioniert in den meisten Browsern, nämlich Firefox und Chrome.
Wenn es das nicht tut, z.B. in einem alten Browser, gibt es eine hässliche, aber zuverlässige Möglichkeit, das use strict
sicherzustellen. Setzen Sie es in diese Art von Wrapper:
(function() { 'use strict'; // ...your code here...})()
Sollten wir „strict“ verwenden?
Die Frage mag offensichtlich klingen, ist es aber nicht.
Man könnte empfehlen, Skripte mit "use strict"
zu beginnen… Aber wissen Sie, was cool ist?
Modernes JavaScript unterstützt „Klassen“ und „Module“ – fortgeschrittene Sprachstrukturen (zu denen wir sicher noch kommen werden), die use strict
automatisch ermöglichen. Wir müssen also die "use strict"
-Direktive nicht hinzufügen, wenn wir sie verwenden.
So ist "use strict";
für den Moment ein willkommener Gast am Anfang Ihrer Skripte. Später, wenn Ihr Code vollständig in Klassen und Modulen enthalten ist, können Sie es weglassen.
Ab sofort müssen wir use strict
im Allgemeinen kennenlernen.
In den nächsten Kapiteln, wenn wir die Sprachfunktionen kennenlernen, werden wir die Unterschiede zwischen dem strengen und dem alten Modus sehen. Zum Glück gibt es nicht viele und sie machen unser Leben tatsächlich besser.
Alle Beispiele in diesem Tutorial gehen vom strict-Modus aus, wenn nicht (sehr selten) anders angegeben.