首页 > 解决方案 > 从根本上说,为什么函数声明的“this”绑定的执行上下文设置为全局对象?

问题描述

似乎无法理解这一点。

我试图推理的解释:

函数声明(如 var 声明)绑定到全局对象环境记录 (OER)。

全局 OER 与全局对象同步。

全局对象具有作为属性的功能。

因此,该函数通过 globalObj.function 隐式调用(并且调用确定了“this”)

https://tc39.es/ecma262/#sec-global-environment-records

标签: javascript

解决方案


不,这与作为全局对象的“属性”的函数无关(尽管从历史上看,它可能是灵感,我不知道)。

函数中的this值是在函数调用期间在OrdinaryCallBindThis过程中设置的,您所引用的行为取决于严格模式。在草率模式下,如果ThisArgumentundefinedor null(这是普通someFunction()调用的情况),它将使用全局对象(或更准确地说,GlobalThisValue)。


推荐阅读