Я еще не знаком с ECMAScript 6. Я только что клонировал репо React Starter Kit, который использует ES6 для кода приложения. Я был удивлен, увидев, что linter настроен, чтобы запретить вхождения директивы use strict
, которая, как я думал, была рекомендована в JavaScript до ES6. Итак, что точка?
Не рекомендуется использовать "использовать строгое" в ES6?
Ответ 1
Модули ES6 всегда находятся в строгом режиме. Чтобы процитировать соответствующую часть спецификации:
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.