JavaScript 中,global 和 globalThis

在 JavaScript 中,global 和 globalThis 都是与全局作用域相关的概念,但它们有不同的用途和适用范围,主要区别如下:

一、定义与用途

  1. global

    • 定义global 是 Node.js 环境中的全局对象。
    • 用途:在 Node.js 中,你可以通过 global 对象来定义全局变量或函数。这些变量或函数在整个 Node.js 应用程序中都是可访问的。
  2. globalThis

    • 定义globalThis 是一个标准化的全局对象,旨在为所有 JavaScript 环境提供一种一致的方式来访问全局对象。
    • 用途globalThis 的引入解决了不同 JavaScript 环境中全局对象名称不一致的问题。无论是在浏览器、Web Worker、Node.js 还是其他 JavaScript 环境中,globalThis 都可以用来访问全局对象。

二、适用范围

  1. global

    • 环境限制global 仅在 Node.js 环境中有效。
    • 兼容性:由于 global 是 Node.js 特有的,因此在非 Node.js 环境中(如浏览器)使用 global 会导致错误。
  2. globalThis

    • 广泛适用globalThis 是在 ECMAScript 2020 (ES11) 中标准化的,得到了广泛的标准化支持。它可以在所有现代 JavaScript 环境中使用,包括浏览器、Web Worker、Node.js 等。
    • 一致性:使用 globalThis 可以确保代码在不同环境中的一致性和可移植性。

三、代码示例

  1. 在 Node.js 中使用 global

    global.myGlobalVar = "Hello from global!";  
    console.log(global.myGlobalVar); // 输出: Hello from global!
  2. 在浏览器和 Node.js 中使用 globalThis

    globalThis.myGlobalVar = "Hello from globalThis!";  
    console.log(globalThis.myGlobalVar); // 在浏览器和 Node.js 中都会输出: Hello from globalThis!

四、兼容性

  • global:由于它是 Node.js 特有的,因此在不需要兼容 Node.js 以外环境的情况下,可以直接使用 global
  • globalThis:除了极少数旧版浏览器(如 Internet Explorer)外,现代浏览器和 Node.js 都支持 globalThis。如果需要兼容旧版浏览器,可以使用 polyfill 来模拟 globalThis 的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值