ES10 的 globalThis 给全局变量带来了标准化,避免在浏览器和 Node.js 中的差异.

阅读时长 3 分钟读完

在过去,在浏览器和 Node.js 中,我们需要使用不同的方式来访问全局对象。在浏览器中,我们使用 window 对象,而在 Node.js 中,我们使用 global 对象。但是,由于这两种方式的存在差异,会导致在不同的环境中出现意外的行为和错误。幸运的是,现在有了一种新的方法来访问全局变量:globalThis

globalThis 介绍

globalThis 是一个指向全局对象的属性,它是ES10新增的一个全局对象。它可以跨平台地访问全局作用域,而不需要知道当前环境使用的是哪种全局变量。 globalThis 在浏览器,Node.js 和其他环境中都是可用的。

在浏览器中, globalThis 属性就是 window 对象。在 Node.js 中,globalThis 属性就是 global 对象。

globalThis 的出现,使得我们可以在任何环境中统一地访问全局变量,而不需要担心环境的差异。这使得我们更容易编写跨平台代码,在不同的环境中,代码可以保持一致。

globalThis 的应用

全局变量

在以前的 JavaScript 版本中,我们使用的是全局变量 window 或 global 来存储全局变量。现在, 我们可以使用 globalThis 来代替它们,这样可以统一全局变量的访问方式,代码更加一致。

跨平台代码

使用全局对象时,我们需要确定当前环境是使用 window 还是 global。这可能需要我们为不同的环境编写不同的代码。但是,现在我们可以使用 globalThis 来实现一致的代码。

-- -------------------- ---- -------
-- ---
-- ------- ------ --- ----------- -- ------ ------ --- ------------ -
  -- ------- --
  ------------ - ------
- ---- -
  -- -----
  ------------ - ------
-

-- -- ---------- ---
---------------- - ------

IIFE 中的 this

当我们在 IIFE 中编写 JavaScript 时,我们通常需要将 this 关键字存储到一个变量中,以避免 this 关键字引用错误的对象。 globalThis 给我们提供了一种更通用的方式,以避免在不同的环境中使用不同的变量。

结论

globalThis 的出现,使得我们更容易写出在不同环境下都能够正常执行的代码。它是一个重要的进步,可以大大减少我们在跨平台开发中的困惑和错误。 在编写跨平台 JavaScript 时,请始终优先考虑使用 globalThis,以确保代码的一致性。

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

纠错
反馈