我对ECMAScript 6还不熟悉。我刚刚克隆了React Starter Kit repo,它使用ES6编写应用程序代码。我很惊讶地发现,该linter 已配置为禁止出现use strict
指令,这在ES6之前的JavaScript中被认为是推荐的。那么这有何意义呢?
我对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或ArrowFunction位于严格模式代码中,或者产生该函数[[ECMAScriptCode]]内部槽值的代码以包含Use Strict指令的指令前言开头,则函数代码是严格模式代码。
- 如果作为内置Function和Generator构造函数的参数提供的函数代码的最后一个参数是一个字符串,当处理该字符串时,它是以包含Use Strict指令的指令前言开头的FunctionBody,则该函数代码是严格模式代码。
"use strict"; console.log('foo')
的脚本中(使用AirBnB预设),遇到了strict
错误。这算是一个模块吗? - Dan Dascalescu