DEV Community

Cover image for Difference between global & globalThis
Ritam Saha
Ritam Saha

Posted on

Difference between global & globalThis

Let's get straight to the point.
global and globalThis both refer to JavaScript's global object, but they differ in scope and compatibility across environments.

What is global??

global is NodeJS-specific and serves as the top-level object containing built-in functions like console and setTimeout.
It does not exist in browsers, where attempting to access it throws a ReferenceError.​
This environment-specific nature limits its use to server-side code.
global is only specific to NodeJS as will give different result based on different enviroment.

  • Browsers: window
  • Node.js: global
  • Web Workers: self
  • Strict mode functions: undefined

This made writing universal JavaScript code painful. Before ES2020, you needed this ugly code to get the global object:

function getGlobalObjectOldWay() {
  // Browser
  if (typeof window !== 'undefined') 
      return window;
  // NodeJS
  if (typeof global !== 'undefined') 
      return global;
  // Web Worker
  if (typeof self !== 'undefined') 
      return self;
  // Fallback
  return this;
}

console.log('Old way (Node.js):', getGlobalObjectOldWay());
Enter fullscreen mode Exit fullscreen mode

What is globalThis??

So we already saw the problem with global and to solve this globalThis was introduced in ES2020. globalThis is a standardized, cross-platform way to access the global object that works everywhere - browsers (window), Node.js (global), and Web Workers (self).

globalThis solves this by providing one consistent reference across all environments. In global scope, this equals globalThis, making it memorable.​


Aspect global globalThis
Environments Node.js only linkedin​ All (browsers, Node, Workers) coreui​
Standardization Non-standard linkedin​ ES2020 standard developer.mozilla​
Availability ReferenceError in browsers linkedin​ Always works newline​
Polyfill Need None (Node-only) Rare, for old browsers blog.logrocket​

Use globalThis for shared codebases, like your full-stack projects, to avoid environment-specific bugs. However, use global when you're explicitly writing Node.js-specific code.

Top comments (0)