"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:
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)
Suppression d'une variable (ou objet) n'est pas autorisé.
La suppression d'une fonction est pas autorisée.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
Dupliquer un nom de paramètre est pas autorisé:
Octal littéraux numériques ne sont pas autorisés:
Échapper les caractères ne sont pas autorisés:
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
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
Suppression d'une propriété undeletable est pas autorisé:
La chaîne "eval" ne peut pas être utilisé comme une variable:
La chaîne "arguments" ne peuvent pas être utilisés comme une variable:
L'instruction with est pas permis:
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é:
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
Fais attention!
Fais attention!
Le "use strict" directive est reconnue uniquement au début d'un script ou une fonction.