我还不熟悉 ECMAScript 6。我刚刚克隆了 React Starter Kit 存储库,它使用 ES6 作为应用程序代码。我很惊讶地发现 linter 是配置好的 https://github.com/kriasoft/react-starter-kit/blob/master/.eslintrc来禁止以下情况的发生use strict
指令,我认为 ES6 之前的 JavaScript 中推荐使用该指令。那么有什么意义呢?
ES6 模块始终处于严格模式。引用相关部分the spec http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code:
10.2.1 严格模式代码
ECMAScript 脚本语法单元可以使用无限制或严格模式语法和语义进行处理。在以下情况下,代码被解释为严格模式代码:
- 如果全局代码以包含使用严格指令的指令序言开头(请参阅 14.1.1),则全局代码是严格模式代码。
- 模块代码始终是严格模式代码。
- ClassDeclaration 或 ClassExpression 的所有部分都是严格模式代码。
- 如果 Eval 代码以包含使用严格指令的指令序言开头,或者对 eval 的调用是严格模式代码中包含的直接 eval(请参阅 12.3.4.1),则它是严格模式代码。
- 如果关联的 FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition 或 ArrowFunction 包含在严格模式代码中,或者如果生成函数的 [[ECMAScriptCode]] 内部槽值的代码以指令序言开头,则函数代码是严格模式代码其中包含使用严格指令。
- 如果最后一个参数是一个字符串,并且在处理时是一个以包含使用严格指令的指令序言开头的 FunctionBody,则作为内置 Function 和 Generator 构造函数的参数提供的函数代码是严格模式代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)