哪些 ECMAScript 6 特性意味着严格模式?

IT技术 javascript ecmascript-6
2021-01-17 07:18:07

在 ECMAScript 5(又名 JavaScript)中,我可以通过"use strict"在函数(或文件,但不鼓励这样做)的顶部添加来触发严格模式

我知道在 ECMAScript 6 中,某些语法特性会打开严格模式,尤其是class, 和module(不管你怎么做。)

在 ECMAScript 6 世界中,触发严格模式的完整方法列表是什么?

1个回答

规范说:

  • module代码始终是严格模式代码。
  • ClassDeclarationClassExpression 的所有部分都是严格模式代码。

其余的只是 ES5 中已知的东西,基本上所有以"use strict";指令开头的 global/eval/function 代码它也适用于新的 ES6 函数类型(箭头、生成器、方法语法)。

@MörreNoseshine:正如答案所说,非module中的严格模式规则与 ES5 中的规则相同。节点(“module”)脚本仍然需要明确地开始"use strict"以使module范围 IEFE 使用严格模式。
2021-03-14 07:18:07
什么构成“module代码”?使用export文件中任何地方,还是import
2021-03-19 07:18:07
答案和规范(由上面的某个人链接)缺少一条关键信息:如果我使用 ES 2015 但没有使用 ES 2015 module怎么办?因为我使用的是 io.js 并且新的module系统还不能使用(除非我使用 Babel),所以我确实使用了 ES 2015 的特性,但要等到我真正可以在本地使用新的module语法。在这种情况下是否隐含了严格模式?如果不是,他们真的应该说“ES 2015 module”。它只与 node.js/io.js 相关,因为在浏览器中很清楚,但 node.js 已经有module......
2021-03-24 07:18:07
我有点惊讶地看到生成器并不隐含严格。
2021-04-08 07:18:07
@greim:是的,声明exportimport声明都使它成为一个module,它们在其他地方会是语法错误。但是,javascript 代码文件是被解释为脚本还是module,只有您的转译器/引擎决定,您无法通过查看代码来了解它。
2021-04-10 07:18:07