Я начал изучать Node.js и написал много демонстрационных веб-приложений, чтобы понять поток Node.js, Express.js, jade и т.д.
Но одна вещь, с которой я столкнулся недавно, - это утверждение "use strict"
как первая строка внутри каждой функции и каждого файла .js
.
Как точно это интерпретируется Node.js?
Ответ 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).