Derniers tutoriels de développement web
 

JavaScript Utilisez Strict


"use strict"; Définit que le code JavaScript doit être exécuté en mode "strict".


Le "use strict" directive

Le "use strict" directive est nouveau dans JavaScript 1.8.5 (ECMAScript version 5) la (ECMAScript version 5) .

Il est pas une déclaration, mais une expression littérale, ignoré par les versions antérieures de JavaScript.

Le but de "use strict" est d'indiquer que le code doit être exécuté en mode "strict".

Avec le mode strict, vous ne pouvez pas, par exemple, utiliser des variables non déclarées.

Le mode strict est pris en charge:
IE depuis la version 10. Firefox à partir de la version 4.
Chrome depuis la version 13. Safari depuis la version 5.1.
Opera depuis la version 12.


Déclarant mode Strict

Le mode strict est déclaré en ajoutant "use strict"; au début d'un script ou une fonction.

Déclarée au début d'un script, il a une portée globale (tout code dans le script sera exécuté en mode strict):

Exemple

"use strict";
x = 3.14;       // This will cause an error (x is not defined)
Essayez - le vous - même »

Exemple

"use strict";
myFunction();

function myFunction() {
    y = 3.14;   // This will also cause an error (y is not defined)
}
Essayez - le vous - même »

Déclarée l'intérieur d'une fonction, il a une portée locale (seul le code à l'intérieur de la fonction est en mode strict):

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)
}
Essayez - le vous - même »

Le "use strict"; Syntaxe

La syntaxe, pour déclarer le mode strict, a été conçu pour être compatible avec les anciennes versions de JavaScript.

Compiler un littéral numérique (4 + 5;) ou une chaîne littérale ("John Doe";) dans un programme JavaScript n'a pas d' effets secondaires. Il compile simplement à une variable non existante et meurt.

Donc , "use strict" ; ne compte pour les nouveaux compilateurs que "comprendre" la signification de celui-ci.


Pourquoi Strict Mode?

Mode Strict rend plus facile à écrire "sécuriser" JavaScript.

changements de mode strictes précédemment acceptées "mauvaise syntaxe" dans des erreurs réelles.

A titre d'exemple, dans des conditions normales JavaScript, mistyping un nom de variable crée une nouvelle variable globale. En mode strict, cela renvoie une erreur, ce qui rend impossible de créer accidentellement une variable globale.

Dans normale JavaScript, un développeur ne recevra pas de retour d'erreur affectant des valeurs aux propriétés non-inscriptibles.

En mode strict, toute cession à une propriété non-inscriptible, une propriété getter seule, un non-existant propriété, une variable non-existante, ou un objet non existant, sera une erreur.


Non autorisés en mode Strict

Utilisation d'une variable, sans le déclarer, ne sont pas autorisés:

"use strict";
x = 3.14;                // This will cause an error (x is not defined)

Essayez - le vous - même »

Les objets sont des variables aussi.

L'utilisation d'un objet, sans le déclarer, ne sont pas autorisés:

"use strict";
x = {p1:10, p2:20};      // This will cause an error (x is not defined)

Essayez - le vous - même »

Suppression d'une variable (ou objet) n'est pas autorisé.

"use strict";
var x = 3.14;
delete x;                // This will cause an error

Essayez - le vous - même »

La suppression d'une fonction est pas autorisée.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

Essayez - le vous - même »

Dupliquer un nom de paramètre est pas autorisé:

"use strict";
function x(p1, p1) {};   // This will cause an error

Essayez - le vous - même »

Octal littéraux numériques ne sont pas autorisés:

"use strict";
var x = 010;             // This will cause an error

Essayez - le vous - même »

Échapper les caractères ne sont pas autorisés:

"use strict";
var x = \010;            // This will cause an error

Essayez - le vous - même »

L'écriture dans une propriété en lecture seule est pas autorisé:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

Essayez - le vous - même »

L'écriture dans une propriété get-only est pas autorisé:

"use strict";
var obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

Essayez - le vous - même »

Suppression d'une propriété undeletable est pas autorisé:

"use strict";
delete Object.prototype; // This will cause an error

Essayez - le vous - même »

La chaîne "eval" ne peut pas être utilisé comme une variable:

"use strict";
var eval = 3.14;         // This will cause an error

Essayez - le vous - même »

La chaîne "arguments" ne peuvent pas être utilisés comme une variable:

"use strict";
var arguments = 3.14;    // This will cause an error

Essayez - le vous - même »

L'instruction with est pas permis:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

Essayez - le vous - même »

Pour des raisons de sécurité, eval() ne peut pas créer des variables dans le champ d' application à partir de laquelle il a été appelé:

"use strict";
eval ("var x = 2");
alert (x);               // This will cause an error

Essayez - le vous - même »

Dans les appels de fonction comme f() , la cette valeur a été l'objet global. En mode strict, il est maintenant indéfini.


Future Proof!

mots-clés réservés futurs ne sont pas autorisés en mode strict. Ceux-ci sont:

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
"use strict";
var public = 1500;      // This will cause an error

Essayez - le vous - même »


Fais attention!

Fais attention!

Le "use strict" directive est reconnue uniquement au début d'un script ou une fonction.