Mode strict JavaScript
- Page précédente Hoisting JS
- Page suivante Mot-clé this JS
"use strict";
Définit que le code JavaScript doit être exécuté en "mode strict".
Instruction "use strict"
"use strict"
C'est une nouvelle instruction dans JavaScript 1.8.5 (version ECMAScript 5).
Ce n'est pas une instruction, mais une expression littérale, les versions précédentes de JavaScript l'ignoreront.
"use strict";
Son rôle est d'indiquer que le code JavaScript doit être exécuté en "mode strict".
En mode strict, vous ne pouvez pas, par exemple, utiliser des variables non déclarées.
Les versions suivantes de navigateurs prennent en charge le mode strict :
- Version 10 et suivante d'IE
- Version 4 et suivante de Firefox
- Version 13 et suivante de Chrome
- Version 5.1 et suivante de Safari
- Version 12 et suivante d'Opera
Déclarer le mode strict
En ajoutant "use strict";
Pour déclarer le mode strict.
Déclarer le mode strict au début du script, avec une portée globale (tous les codes dans le script s'exécutent en mode strict):
Exemple
"use strict"; x = 3.14; // Cela provoquera une erreur, car x n'a pas été déclaré
Exemple
"use strict"; myFunction(); function myFunction() { y = 3.14; // Cela provoquera une erreur, car y n'a pas été déclaré }
Déclarer le mode strict dans une fonction, avec une portée locale (seulement le code dans la fonction s'exécute en mode strict):
x = 3.14; // Cela ne provoquera pas d'erreur myFunction(); function myFunction() { "use strict"; y = 3.14; // Cela provoquera une erreur }
"use strict"; syntaxe
La syntaxe de la déclaration de mode strict est conçue pour être compatible avec les versions précédentes de JavaScript.
Il n'y a pas d'effet négatif à compiler des textes numériques (comme 4+5) ou des textes chainés ("Bill Gates") dans un programme JavaScript. Ils ne sont compilés que comme des variables inexistantes et disparaissent ensuite.
Tout "use strict";
Ce ne touchera qu'aux compilateurs qui "comprendront" son sens.
Pourquoi utiliser le mode strict ?
Le mode strict nous rend plus faciles à écrire un JavaScript "sécurisé".
Le mode strict transforme les "mauvais syntaxes" acceptables auparavant en erreurs réelles.
Par exemple, dans le JavaScript ordinaire, la frappe incorrecte d'un nom de variable crée une nouvelle variable globale. Dans le mode strict, cela provoquera une erreur, ce qui rendra impossible la création de variables globales par surprise.
Dans le JavaScript ordinaire, si l'on affecte à une propriété non inscrite, le développeur ne reçoit aucune rétroaction d'erreur.
Dans le mode strict, l'affectation à une propriété non inscrite, lisible uniquement, inexistante, ou l'affectation à une variable ou un objet inexistant, entraînera une erreur.
Ce qui n'est pas permis dans le mode strict
Il n'est pas permis d'utiliser une variable sans la déclarer :
"use strict"; x = 3.14; // Cela provoquera une erreur
Un objet est également une variable
Il n'est pas permis d'utiliser des objets sans les déclarer :
"use strict"; x = {p1:10, p2:20}; // Cela provoquera une erreur
Il n'est pas permis de supprimer une variable (ou un objet) :
"use strict"; var x = 3.14; delete x; // Cela provoquera une erreur
Il n'est pas permis de supprimer une fonction :
"use strict"; function x(p1, p2) {}; delete x; // Cela provoquera une erreur
Il n'est pas permis de répeter les noms de paramètres :
"use strict"; function x(p1, p1) {}; // Cela provoquera une erreur
Les textes numériques octonaux ne sont pas permis :
"use strict"; var x = 010; // Cela provoquera une erreur
Les caractères d'échappement ne sont pas permis :
"use strict"; var x = \010; // Cela provoquera une erreur
Il n'est pas permis d'écrire dans des propriétés lecture seule :
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // Cela provoquera une erreur
Il n'est pas permis d'écrire dans des propriétés uniquement lues :
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // Cela provoquera une erreur
Il n'est pas permis de supprimer des propriétés non supprimables :
"use strict"; delete Object.prototype; // Cela provoquera une erreur
La chaîne "eval" ne peut pas être utilisée comme variable :
"use strict"; var eval = 3.14; // Cela provoquera une erreur
La chaîne "arguments" ne peut pas être utilisée comme variable :
"use strict"; var arguments = 3.14; // Cela provoquera une erreur
with
Les instructions suivantes ne sont pas autorisées :
"use strict"; with (Math){x = cos(2)}; // Cela provoquera une erreur
Pour des raisons de sécurité, il n'est pas permis eval()
Créez des variables dans le domaine d'application où elles sont appelées :
"use strict"; eval ("var x = 2"); alert (x); // Cela provoquera une erreur
Dans un appel de fonction similaire à f(), la valeur de this est l'objet global. Dans le mode strict, il est maintenant devenu undefined
.
Garantie future
Les mots-clés réservés pour l'avenir ne sont pas autorisés dans le mode strict. Ils sont :
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // Cela provoquera une erreur
Avertissement
"use strict"
Les instructions peuvent être utilisées que dans les scripts ou les fonctions deDébutReconnu.
- Page précédente Hoisting JS
- Page suivante Mot-clé this JS