전역 globalThis 속성은 최상위 전역 객체를 반환합니다.

설명

역사적으로, 서로 다른 JavaScript 환경의 전역 범위에 접근하는건 서로 다른 구문을 필요로 했습니다. 웹에서는 window, self, frames를 사용할 수 있지만, 웹 워커에서는 self만 동작합니다. Node.js에서는 아무것도 쓸 수 없고, 대신 global을 사용해야 합니다.
비엄격 모드에서의 함수 내부에서 this를 사용할 수도 있겠지만, 모듈이나 엄격 모드의 함수에서는 undefined를 가리키는 문제가 있습니다.

globalThis 속성은 환경에 무관하게 전역 객체에 접근하는 표준 방법을 제공하며, 비슷한 속성인 window, self와는 다르게 윈도우와 비윈도우 문맥 모두에서 동작을 보장할 수 있습니다. 따라서 코드를 구동하는 환경을 알지 않고도 전역 객체에 일관적으로 접근할 수 있습니다.

이름

self와 global처럼 여러 인기있던 제안은 기존 코드와의 호환성 문제를 우려해 제외됐습니다.

예제

globalThis 이전에 현재 환경의 전역 객체를 가져오는 방법 중 유일하게 믿을만한 방법은 Function('return this')()였습니다. 그러나 일부 환경에서는 CSP 위반을 초래하므로 es6-shim은 다음 예제와 같은 검사를 수행합니다.

var getGlobal = function () { 
  if (typeof self !== 'undefined') { return self; } 
  if (typeof window !== 'undefined') { return window; } 
  if (typeof global !== 'undefined') { return global; } 
  throw new Error('unable to locate global object'); 
}; 

var globals = getGlobal(); 

if (typeof globals.setTimeout !== 'function') { 
  // no setTimeout in this environment! 
}

globalThis를 사용할 수 있으면 환경에 따른 전역 객체 검사는 더 이상 필요하지 않습니다.

if (typeof globalThis.setTimeout !== 'function') {
  // no setTimeout in this environment!
}

명세

Specification Status Comment
globalThis proposal Stage 3  

브라우저 호환성

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support 71Edge No support NoFirefox Full support 65IE No support NoOpera No support NoSafari No support NoWebView Android Full support 71Chrome Android Full support 71Edge Mobile No support NoFirefox Android Full support 65Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

Full support  
Full support
No support  
No support

문서 태그 및 공헌자

태그: 
이 페이지의 공헌자: mdnwebdocs-bot, alattalatta
최종 변경자: mdnwebdocs-bot,