Como a instrução ‘use strict’ é interpretada no Node.js?

Eu comecei a explorar o Node.js e escrevi muitos aplicativos da web de demonstração, para entender o stream de Node.js, Express.js, jade, etc.

Mas uma coisa que me deparei recentemente é a declaração "use strict" como a primeira linha dentro de cada function e todo arquivo .js .

Como exatamente isso é interpretado pelo Node.js?

"use strict";

Basicamente, ele habilita o modo estrito.

O Modo Estrito é um recurso que permite colocar um programa ou uma function em um contexto operacional “estrito”. Em contexto operacional estrito, o formulário de método vincula isso aos objects como antes. O formulário de function liga isto a undefined, não aos objects de conjunto global.

De acordo com seus comentários, você está dizendo que algumas diferenças estarão lá. Mas é sua suposição. O código do Node.js não é nada além do seu código JavaScript. Todo o código Node.js é interpretado pelo mecanismo JavaScript V8 . O V8 JavaScript Engine é um mecanismo JavaScript de código aberto desenvolvido pelo Google para o navegador da Web Chrome.

Então, não haverá grande diferença como "use strict"; é interpretado pelo navegador Google Chrome e pelo Node.js.

Por favor, leia o que é o modo estrito em JavaScript.

Para maiores informações:

  1. Modo estrito
  2. Suporte a ECMAScript 5 Strict Mode em navegadores
  3. Modo estrito está chegando à cidade
  4. Tabela de compatibilidade para o modo estrito
  5. Perguntas sobre estouro de pilha: o que ‘usar estrito’ faz em JavaScript e qual é o raciocínio por trás disso

ECMAScript 6:

Código ECMAScript 6 e modo estrito. A seguir, é breve da especificação :

10.2.1 Código de Modo Estrito

Uma unidade sintática do ECMAScript Script pode ser processada usando a syntax e a semântica do modo irrestrito ou restrito. Código é interpretado como código de modo estrito nas seguintes situações:

  • O código global é um código de modo estrito se começar com um Prólogo da Diretiva que contenha uma Diretiva de Uso Rígido (ver 14.1.1).
  • O código do módulo é sempre código de modo estrito.
  • Todas as partes de um ClassDeclaration ou um ClassExpression são código de modo estrito.
  • O código Eval é um código de modo estrito se começar com um Prólogo de Diretiva que contenha uma Diretriz Restrita de Uso ou se a chamada para eval for um eval direto (ver 12.3.4.1) contido no código de modo estrito.
  • O código de function é um código de modo estrito se o FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition ou ArrowFunction associados estiver contido no código de modo estrito ou se o código que produz o valor do slot interno [[ECMAScriptCode]] da function começar com uma diretiva. que contém uma diretiva estrita de uso.
  • Código de function que é fornecido como os argumentos para os construtores internos de function e gerador é código de modo estrito se o último argumento é uma seqüência de caracteres que quando processada é um FunctionBody que começa com um prólogo de diretiva que contém uma diretiva de uso estrito.

Além disso, se você estiver perdido em quais resources são suportados pela sua versão atual do Node.js, este node.green pode ajudá-lo (aproveitando os mesmos dados do kangax ).