从根本上讲,为什么函数声明的“ this”绑定的执行上下文设置为全局对象?

时间:2020-02-01 16:56:09

标签: javascript

似乎无法理解这一点。

我尝试解释的原因:

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

全局OER与全局对象同步。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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