全局对象

JavaScript 中的**全局对象**是一个表示全局作用域对象

注意:全局可用对象(即全局作用域中的对象)有时也称为全局对象,但严格来说,每个环境只有一个全局对象。

在每个 JavaScript 环境中,始终定义了一个全局对象。全局对象的接口取决于脚本运行的执行上下文。例如

  • 在 Web 浏览器中,脚本未明确启动为后台任务的任何代码都将Window作为其全局对象。这构成了 Web 上绝大多数 JavaScript 代码。
  • Worker中运行的代码将WorkerGlobalScope对象作为其全局对象。
  • Node.js下运行的脚本将名为global的对象作为其全局对象。

全局属性globalThis允许访问全局对象,而不管当前环境如何。

var语句和脚本顶层的函数声明会创建全局对象的属性。另一方面,letconst声明永远不会创建全局对象的属性。

全局对象的属性会自动添加到全局作用域

在 JavaScript 中,全局对象始终保存对自身的引用。

js
console.log(globalThis === globalThis.globalThis); // true (everywhere)
console.log(window === window.window); // true (in a browser)
console.log(self === self.self); // true (in a browser or a Web Worker)
console.log(frames === frames.frames); // true (in a browser)
console.log(global === global.global); // true (in Node.js)

另请参阅