不建议在ES6中使用“使用严格”?

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


答案 1

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

10.2.1 严格模式代码

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

  • 如果全局代码以包含使用严格指令的指令序幕开头,则全局代码为严格模式代码(请参阅 14.1.1)。
  • 模块代码始终是严格模式代码。
  • 类声明或类表达式的所有部分都是严格模式代码。
  • 如果 Eval 代码以包含使用严格指令的指令序幕开头,或者如果对 eval 的调用是包含在严格模式代码中的直接 eval(请参阅 12.3.4.1),则该 Eval 代码为严格模式代码。
  • 如果关联的函数声明、函数表达式、生成器声明、生成器表达式、方法定义或 ArrowFunction 包含在严格模式代码中,或者如果生成函数的 [[ECMAScriptCode]] 内部插槽值的代码以包含 Use 严格指令的指令序幕开头,则函数代码是严格模式代码。
  • 如果最后一个参数是字符串,而处理时以包含 Use Strict 指令的指令序幕开头的 FunctionBody,则作为参数提供给内置函数和生成器构造函数的函数代码是严格模式代码。

答案 2