JavaScript这是指严格模式下的全局对象



我在JavaScript中学习this,根据我在严格模式下的理解,this应该是未定义的,但当我尝试这个时

"use strict";

function demo () {
// Here this is Undefined in strict mode
console.log(this);
}
//Here this refers to the Global Object
console.log(this);
demo();

正如注释中提到的,控制台仍然打印Window对象,除非我调用demo((对象。为什么会这样?

ECMA2015(ES6(指定全局环境记录提供this值:

8.1.1.4.8 HasThisBinding((全局环境记录始终提供一个this绑定,其值为关联的全局对象。

ECMA2018对本版本第8.1.1.4节"全球环境记录:"中的表17进行了轻微修改

表17:全球环境记录的其他字段

字段名:[[GlobalThisValue]]
:对象
含义:对象this在全局范围内返回的值。主机可以提供任何ECMAScript对象值。

然而,典型的主机环境仍然将全局this值设置为全局对象,我认为它将继续这样做。

虽然严格模式确实提供了简单直接调用的函数中的this值为undefined,但它不会抑制在全局环境记录中为this创建绑定,该绑定将被视为全局文件级代码中的this值。

最新更新