Не рекомендуется использовать "использовать строгое" в ES6?

Я еще не знаком с ECMAScript 6. Я только что клонировал репо React Starter Kit, который использует ES6 для кода приложения. Я был удивлен, увидев, что linter настроен, чтобы запретить вхождения директивы use strict, которая, как я думал, была рекомендована в JavaScript до 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.