ECMAScript 2020 中的全局命令空间:globalThis

阅读时长 3 分钟读完

在 ECMAScript 2020 中,新增了一个全局命名空间对象 globalThis,它是一个全局变量,提供了当前环境下最顶层对象的引用,可以在任何地方访问到它。

简介

在之前的 ECMAScript 规范中,存在多种方式来访问全局对象,比如浏览器环境下可以使用 window 或者 self,在 Node.js 中可以使用 global。但是在不同的环境中,访问顶层对象的方式不统一,这使得一些跨平台的代码需要不同的实现方式,增加了维护成本。

为了解决这个问题,ECMAScript 2020 引入了 globalThis,它是唯一一个可以从任何执行上下文中获取全局对象的标准方法,包括浏览器中的窗口对象,Web Worker 中的 global 对象,Node.js 中的 global 对象等。

深入了解

globalThis 是一个可访问的全局属性。在全局作用域中,可以使用以下方式访问它:

在浏览器中,这个全局属性将指向 window 对象。在 Node.js 中,它将指向 global 对象。在 Web Worker 中,它将指向 WorkerGlobalScope 对象。

而在严格模式下的函数内部,globalThis 的值为 undefined。这是因为在严格模式中,全局对象不可用,为了确保不会意外访问它,ECMAScript 2020 规定在严格模式下访问 globalThis 会抛出一个 ReferenceError 错误。

在跨平台的开发中,使用 globalThis 作为全局对象的引用可以更好的解决代码的兼容性问题。例如,假设我们要在一个函数中判断当前的执行环境是否支持 Promise:

示例代码

下面的示例代码展示了使用 globalThis 访问全局对象的过程:

总结

globalThis 是 ECMAScript 2020 中新增的全局命名空间,它可以从任何执行上下文中获取全局对象,避免了跨平台开发中的兼容性问题。只有在严格模式下访问 globalThis 时,会抛出一个 ReferenceError 错误。

我们希望本文能对 globalThis 的概念和用法有一个更深入的了解,使您在开发中能够更好地使用它。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e6e7a9f6b2d6eab323e14d

纠错
反馈