ES11:遵循 JavaScript 全局环境(globalThis)约定的理由

在 JavaScript 中,全局环境是一个非常重要的概念,它指的是全局作用域的上下文环境。在浏览器中,全局环境是 window 对象,在 Node.js 中,全局环境是 global 对象。然而,在不同的 JavaScript 运行环境中,全局环境的名称可能不同,这给开发者带来了一些不便。为了解决这个问题,ES11 引入了 globalThis 对象,它是一个新的全局对象,始终指向全局环境,无论在哪个 JavaScript 运行环境中。

globalThis 的作用

globalThis 对象有以下几个作用:

  1. 统一全局环境的访问方式。在不同的 JavaScript 运行环境中,全局环境的名称可能不同,使用 globalThis 对象可以避免这个问题,使开发者只需要使用一个名称来访问全局环境。

  2. 提高代码的可移植性。由于 globalThis 对象始终指向全局环境,所以使用 globalThis 对象编写的代码可以在不同的 JavaScript 运行环境中运行,而不需要修改代码。

  3. 支持动态导入模块。在动态导入模块时,需要访问全局环境,使用 globalThis 对象可以避免在不同的 JavaScript 运行环境中使用不同的全局环境名称。

如何使用 globalThis

使用 globalThis 非常简单,只需要在代码中直接使用 globalThis 对象即可。例如,以下代码会在浏览器和 Node.js 中均输出 "Hello, world!":

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

可以看到,使用 globalThis 对象可以使代码更加简洁,同时也提高了代码的可移植性。

实际应用

下面是一个使用 globalThis 对象的实际应用场景:在浏览器和 Node.js 中获取全局对象。

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

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

在上面的代码中,getGlobal 函数会根据当前的 JavaScript 运行环境返回全局对象。使用 globalThis 对象可以更加简洁地实现这个功能:

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

总结

ES11 引入的 globalThis 对象可以避免在不同的 JavaScript 运行环境中使用不同的全局环境名称,提高代码的可移植性。使用 globalThis 对象非常简单,只需要在代码中直接使用 globalThis 对象即可。在实际应用中,使用 globalThis 对象可以使代码更加简洁。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66015394d10417a222c82e77