212

我还不熟悉 ECMAScript 6。我刚刚克隆了 React Starter Kit repo,它使用 ES6 编写应用程序代码。我很惊讶地看到 linter 被配置为禁止该use strict指令的出现,我认为这是在 ES6 之前的 JavaScript 中推荐的。那么有什么意义呢?

4

1 回答 1

269

ES6 模块始终处于严格模式。引用规范的相关部分:

10.2.1 严格模式代码

可以使用不受限制或严格模式的语法和语义来处理 ECMAScript 脚本语法单元。在以下情况下,代码被解释为严格模式代码:

  • 如果全局代码以包含使用严格指令的指令序言开头(参见 14.1.1),则它是严格模式代码。
  • 模块代码始终是严格模式代码。
  • ClassDeclaration 或 ClassExpression 的所有部分都是严格模式代码。
  • 如果 Eval 代码以包含 Use Strict 指令的 Directive Prologue 开头,或者如果对 eval 的调用是包含在严格模式代码中的直接 eval(参见 12.3.4.1),则它是严格模式代码。
  • 如果相关的 FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition 或 ArrowFunction 包含在严格模式代码中,或者如果生成函数 [[ECMAScriptCode]] 内部槽值的代码以指令序言开头,则函数代码是严格模式代码包含使用严格指令。
  • 如果最后一个参数是一个字符串,作为参数提供给内置函数和生成器构造函数的函数代码是一个严格模式代码,该字符串在处理时是一个以包含使用严格指令的指令序言开头的 FunctionBody。
于 2015-07-28T19:23:12.513 回答