217 votes

Comment l'instruction "use strict" est-elle interprétée dans Node.js ?

J'ai commencé à explorer le Node.js et j'ai écrit de nombreuses applications web de démonstration, pour comprendre le flux de Node.js, Express.js, jade, etc.

Mais une chose sur laquelle je suis tombé récemment, c'est la déclaration suivante . "use strict" comme première ligne dans chaque fonction et chaque .js fichier.

Comment est-il interprété par Node.js ?

209voto

Amol M Kulkarni Points 4105

"use strict";

En fait, il active le mode strict.

Le mode strict est une fonctionnalité qui vous permet de placer un programme, ou une fonction, dans un contexte d'exploitation "strict". Dans un contexte d'exploitation strict, le formulaire de méthode est lié aux objets comme auparavant. Le formulaire de fonction le lie aux objets indéfinis, et non aux objets de l'ensemble global.

D'après vos commentaires, vous dites qu'il y aura des différences. Mais c'est votre hypothèse. Le code Node.js n'est rien d'autre que votre code JavaScript. Tout le code Node.js est interprété par l'application V8 Moteur JavaScript . Le site Moteur JavaScript V8 est un moteur JavaScript open source développé par Google pour le navigateur web Chrome.

Il n'y aura donc pas de différence majeure dans la façon dont "use strict"; est interprété par le navigateur Chrome et Node.js.

Veuillez lire ce qu'est le mode strict en JavaScript.

Pour plus d'informations :

  1. Mode strict
  2. Support du mode strict ECMAScript 5 dans les navigateurs
  3. Le mode strict arrive en ville
  4. Tableau de compatibilité pour le mode strict
  5. Questions sur Stack Overflow : Que fait "use strict" en JavaScript et quel est le raisonnement qui le sous-tend ?

ECMAScript 6 :

Code ECMAScript 6 et mode strict. Voici un résumé de la spécification :

10.2.1 Code du mode strict

Une unité syntaxique ECMAScript script peut être traitée en utilisant une syntaxe et une sémantique en mode strict ou non. Le code est interprété comme un code en mode strict dans les situations suivantes :

  • Le code global est un code en mode strict s'il commence par un prologue de directive qui contient une directive Use Strict (voir 14.1.1).
  • Le code du module est toujours un code en mode strict.
  • Toutes les parties d'une ClassDeclaration ou d'une ClassExpression sont du code en mode strict.
  • Le code eval est un code en mode strict s'il commence par un prologue de directive qui contient une directive Use Strict ou si l'appel à eval est un eval direct (voir 12.3.4.1) qui est contenu dans un code en mode strict.
  • Un code de fonction est un code en mode strict si la déclaration de fonction, l'expression de fonction, la déclaration de générateur, l'expression de générateur, la définition de méthode ou la fonction fléchée qui lui est associée est contenue dans un code en mode strict ou si le code qui produit la valeur du slot interne [[ECMAScriptCode]] de la fonction commence par un prologue de directive contenant une directive d'utilisation stricte.
  • Le code de fonction fourni en tant qu'arguments aux constructeurs intégrés Function et Generator est un code en mode strict si le dernier argument est une chaîne qui, une fois traitée, est un FunctionBody commençant par un prologue de directive contenant une directive Use Strict.

En outre, si vous ne savez pas quelles sont les fonctionnalités prises en charge par votre version actuelle de Node.js, vous pouvez consulter cette page. noeud.vert peut vous aider (il s'appuie sur les mêmes données que les kangax ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X