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

Javascript 不建议使用“;使用“严格的”;在ES6中?,javascript,ecmascript-6,strict,es6-modules,Javascript,Ecmascript 6,Strict,Es6 Modules,我还不熟悉ECMAScript 6。我刚刚克隆了React Starter Kit repo,它将ES6用于应用程序代码。我惊讶地看到,linter是为了禁止出现use strict指令,我认为这是在ES6之前的JavaScript中推荐的。那么重点是什么呢?ES6模块始终处于严格模式。引用以下相关部分: 10.2.1严格的模式代码 ECMAScript脚本语法单元可以使用无限制或严格模式语法和语义进行处理。在以下情况下,代码被解释为严格模式代码: 如果全局代码以包含Use strict指令的

我还不熟悉ECMAScript 6。我刚刚克隆了React Starter Kit repo,它将ES6用于应用程序代码。我惊讶地看到,linter是为了禁止出现
use strict
指令,我认为这是在ES6之前的JavaScript中推荐的。那么重点是什么呢?

ES6模块始终处于严格模式。引用以下相关部分:

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

  • 如果全局代码以包含Use strict指令的指令序言开头,则它是严格模式代码(参见14.1.1)
  • 模块代码始终是严格的模式代码。
  • 类声明或类表达式的所有部分都是严格的模式代码
  • 如果Eval代码以包含Use strict指令的指令序言开头,或者如果Eval调用是包含在严格模式代码中的直接Eval(见12.3.4.1),则Eval代码为严格模式代码
  • 如果关联的FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition或Arrow函数包含在严格模式代码中,或者如果生成函数[[ECMAScriptCode]]值的代码内部插槽以包含Use Strict指令的指令序言开始
  • 如果最后一个参数是字符串,并且在处理时是以包含Use strict指令的指令序言开头的函数体,则作为内置函数和生成器构造函数的参数提供的函数代码是严格模式代码

相关:全局代码和模块代码之间有什么区别?我想我是误解了,因为如果我需要('module'),模块代码对我来说意味着module.js中的一切。@BrynnMahsman ES2015有本机模块。CommonJS只是一个库,与语言无关。感谢您的回复。因此,如果不使用导入/导出关键字,它不是ES6模块吗?现在我使用的是节点4,没有导入/导出关键字的权限,我只使用CommonJS module.exports和require()以及默认启用的ES6功能。这将解释为什么我必须在每个文件的顶部使用strict。所以从技术上讲,我仍然在编写CommonJS模块,其中包含V8中启用的一些ES6功能。有关“它是一个模块吗?”的详细检查,请参阅“…虽然存在导入或导出可能表示模块,但缺少导入或导出并不明确表示文件不是模块。因此,在解析过程中没有有效的方法自动检测文件是否是模块。“什么是“模块”?我在一个只包含
“use strict”console.log('foo')
)的脚本上得到
strict
错误(with)。这是一个模块吗?