JavaScript:严格模式和匿名函数

JavaScript:严格模式和匿名函数,javascript,strict,ecmascript-5,Javascript,Strict,Ecmascript 5,几乎我所有的JS文件都包装在匿名函数中。如果我包括“严格使用”在匿名函数之外,严格模式是否仍应用于匿名函数 例如,在下面的脚本中,严格模式是否应用于匿名函数的内部主体: "use strict"; (function() { // Is this code running under strict mode? })(); 根据,如果在文件顶部启用严格模式,它将应用于整个文件/脚本。是的,这意味着它将应用于匿名函数中 您还可以将其添加到函数中,在这种情况下,它仅适用于该特定函数 编辑

几乎我所有的JS文件都包装在匿名函数中。如果我包括
“严格使用”
在匿名函数之外,严格模式是否仍应用于匿名函数

例如,在下面的脚本中,严格模式是否应用于匿名函数的内部主体:

"use strict";

(function() {
    // Is this code running under strict mode?
})(); 
根据,如果在文件顶部启用严格模式,它将应用于整个文件/脚本。是的,这意味着它将应用于匿名函数中

您还可以将其添加到函数中,在这种情况下,它仅适用于该特定函数

编辑添加:这里是。一个相关段落:

10.1.1严格的模式代码

ECMAScript程序语法单元可以使用无限制或严格模式语法和语义进行处理。使用严格模式处理时,三种类型的ECMAScript代码称为严格全局代码、严格eval代码和严格函数代码。在以下情况下,代码被解释为严格模式代码:

  • 如果全局代码以包含Use strict指令的指令序言开头,则它是严格的全局代码(参见14.1)
  • 如果Eval代码以包含Use strict指令的指令序言开头,或者对Eval的调用是对严格模式代码中包含的Eval函数的直接调用(见15.1.2.1.1),则Eval代码为严格Eval代码
  • 作为FunctionDeclaration、FunctionExpression或accessor PropertyAssignment一部分的函数代码是严格函数代码,如果其FunctionDeclaration、FunctionExpression或PropertyAssignment包含在严格模式代码中,或者如果函数代码以包含Use strict指令的指令序言开头,则为严格函数代码
  • 如果最后一个参数是字符串,当作为FunctionBody处理时,以包含Use strict指令的指令序言开始,则作为内置函数构造函数的最后一个参数提供的函数代码是严格函数代码