Как интерпретировать выражение "использовать строгое" в Node.js?

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

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

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

1 ответ

Решение

"use strict";

В основном это включает строгий режим.

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

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

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

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

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

  1. Строгий режим
  2. ECMAScript 5 Поддержка строгого режима в браузерах
  3. Строгий режим приходит в город
  4. Таблица совместимости для строгого режима
  5. Вопросы о переполнении стека: что делает "использование строгого" в JavaScript и какова причина этого


ECMAScript 6:

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

10.2.1 Код строгого режима

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

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

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

Другие вопросы по тегам