JavaScript – strict mode

Der strict mode von ECMASCRIPT ist nicht nur ein Subset der Sprache, er hat bewusst andere Semantik als normaler Code. Browser die strict mode nicht unterstützen, führen diesen Code mit anderem Verhalten aus als Browser die es unterstützen. Deshalb sollte man sich niemals auf den strict mode verlassen ohne gründliches Testen. Strict und non-strict Code kann koexistieren, so kann man zum Beispiel nur einzelne Funktionen in den strict mode setzen.

Strict mode aufrufen

Strict mode kann für ein gesamtes Skript, oder für einzelne Funktionen definiert werden.


// global auf der ersten Zeile des Scripts

"use strict";

// in einer Funktion

function strict() {

  "use strict";

  return "bla";

}

Syntax Fehler

Im strict mode werden folgende Dinge als Fehler betrachtet:

  • Octal syntax (var n = 023;)
  • wit statement
  • Using delete on a variable name delete myVariable;
  • Using eval or arguments as variable or function argument name
  • Using one of the newly reserved keywords (in prevision for ECMAScript 6): implements, interface, let, package, private, protected, public, static, and yield
  • Declaring function in blocks if(a
  • Obvious errors
    • Declaring twice the same name for a property name in an object literal {a: 1, b: 3, a: 7} This is no longer the case in ECMAScript 6 (bug 1041128).
    • Declaring two function arguments with the same name function f(a, b, b){}

Zudem gibt es einige zusätzliche Runtime Errors, welche im normalen Javascript Mode ignoriert werden. Die Details dazu findet ihr im unten verlinkten MDN Artikel.

Quellen:

Leave a Reply