我找到了这篇文章- “使用严格”在 JavaScript 中做了什么,其背后的原因是什么?
我在这里的理解是我应该use strict
永远。
但我想知道,如果这是真的,那么使用“严格模式”总是更好,那么它甚至不会存在,因为这将是一种默认行为。
于是我搜索了ECMAScript 6th edition的定义,发现很多情况下都是默认的。
可以使用不受限制或严格模式的语法和语义来处理 ECMAScript 脚本语法单元。该代码在以下情况下被解释为严格模式代码:
如果全局代码以包含使用严格指令的指令序言开头(参见14.1.1),则它是严格模式代码。
模块代码始终是严格模式代码。
ClassDeclaration或 ClassExpression 的所有部分都是严格模式代码。
如果E val 代码以包含 Use Strict 指令的 Directive Prologue 开头,或者如果对 eval 的调用是包含在严格模式代码中的直接 eval(参见 12.3.4.1),则它是严格模式代码。
如果相关的 FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition 或ArrowFunction包含在严格模式代码中,或者如果生成函数的 [[ECMAScriptCode]] 内部槽值的代码以指令开头,则函数代码是严格模式代码包含使用严格指令的序言。
如果最后一个参数是一个字符串,并且在处理时是一个以包含使用严格指令的指令序言开头的函数体,则作为内置函数和生成器构造函数的参数提供的函数代码是严格模式代码。
非严格模式代码的 ECMAScript 代码称为非严格 代码。
那么,什么时候使用非严格代码是一个不错的选择呢?
提前致谢。