繁体   English   中英

JavaScript:严格模式和匿名函数

[英]JavaScript: Strict mode and anonymous functions

我几乎所有的JS文件都包装在匿名函数中。 如果我包括"use strict"; 在匿名函数之外,严格模式是否仍适用于匿名函数?

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

"use strict";

(function() {
    // Is this code running under strict mode?
})(); 

根据John Resig的文章 ,如果打开文件顶部的严格模式,则该模式将应用于整个文件/脚本。 是的,这意味着它将在匿名函数中应用。

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

编辑添加:这是完整的规范 一个相关的段落:

10.1.1严格模式代码

可以使用非限制或严格模式的语法和语义来处理ECMAScript程序语法单元。 使用严格模式处理时,三种ECMAScript代码称为严格全局代码,严格评估代码和严格功能代码。 在以下情况下,代码被解释为严格模式代码:

  • 如果全局代码以包含使用严格指令的指令序言开头(请参阅14.1),则它是严格的全局代码。
  • 如果Eval代码以包含使用严格指令的指令序言开头,或者如果eval的调用是对严格模式代码中包含的eval函数的直接调用(请参见15.1.2.1.1),则Eval代码是严格的Eval代码。
  • 如果FunctionDeclaration,FunctionExpression或访问器PropertyAssignment的一部分的功能代码包含在严格模式代码中,或者如果该功能代码以包含使用严格指令的指令序言开头,则该功能代码为严格功能代码。
  • 作为最后一个参数提供给内置Function构造函数的函数代码是严格的函数代码,前提是最后一个参数是一个字符串,当作为FunctionBody处理时,该字符串以包含使用严格指令的指令序言开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM