Как интерпретируется оператор "use strict"в узле.Джей? [дубликат]


этот вопрос уже есть ответ здесь:

  • Что делает "use strict" в JavaScript, и каковы причины этого? 25 ответов

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

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

как именно это интерпретируется узлом.Джей?

1 142

1 ответ:

"use strict";

в основном это позволяет строгий режим.

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

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

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

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

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

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


ECMAScript 6:

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

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

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

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

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