Как интерпретируется выражение 'use strict' в Node.js?

Я начал изучать Node.js и написал много демонстрационных веб-приложений, чтобы понять поток Node.js, Express.js, jade и т.д.

Но одна вещь, с которой я столкнулся недавно, - это утверждение "use strict" как первая строка внутри каждой функции и каждого файла .js.

Как точно это интерпретируется Node.js?

+109
источник поделиться
1 ответ

"use strict";

В принципе, он обеспечивает строгий режим.

Строгий режим - это функция, которая позволяет размещать программу или функцию в "строгом" рабочем контексте. В строгом рабочем контексте форма метода связывает это с объектами, как и раньше. Форма функции связывает это с undefined, а не с глобальными заданными объектами.

В соответствии с вашими комментариями вы говорите, что некоторые различия будут там. Но это ваше предположение. Код Node.js - это не что иное, как ваш код JavaScript. Весь код Node.js интерпретируется механизмом JavaScript V8. V8 JavaScript Engine - это движок JavaScript с открытым исходным кодом, разработанный веб-браузером Google для Chrome.

Итак, не будет никакой существенной разницы, как "use strict"; интерпретируется браузером Chrome и Node.js.

Пожалуйста, прочитайте, что такое строгий режим в JavaScript.

Для получения дополнительной информации:

<ч/" > ECMAScript 6:

ECMAScript 6 Код и строгий режим. Ниже приведено краткое из спецификации:

10.2.1 Строковый код режима

Синтаксический блок ECMAScript Script может обрабатываться с использованием синтаксиса и семантики неограниченного или строгого режима. Код интерпретируется как строгий код режима в следующих ситуациях:

  • Глобальный код - это строгий режимный код, если он начинается с директивы Prologue, содержащей директиву Use Strict (см. раздел 14.1.1).
  • Код модуля - это всегда строгий режим.
  • Все части ClassDeclaration или ClassExpression являются строгим кодом режима.
  • Eval code - это строгий режимный код, если он начинается с директивного пролога, содержащего директиву Use Strict, или если вызов eval является прямым eval (см. 12.3.4.1), который содержится в коде строгого режима.
  • Код функции - это строгий режимный код, если связанное с ним FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition или ArrowFunction содержится в коде строгого режима, или если код, который генерирует значение внутреннего словаря [[ECMAScriptCode]], начинается с директивный пролог, содержащий директиву Use Strict.
  • Код функции, который предоставляется в качестве аргументов встроенным конструкторам Function и Generator, является строгим кодом режима, если последним аргументом является String, который при обработке является FunctionBody, который начинается с директивного пролога, содержащего директиву Use Strict.

Кроме того, если вы потеряли какие функции поддерживаются текущей версией Node.js, этот node.green может помочь вам (использует те же данные, что и kangax).

+130
источник

Посмотрите другие вопросы по меткам или Задайте вопрос