October 11, 2021
전역 객체를 사용하면 어디서나 사용 가능한 변수나 함수를 만들 수 있습니다. 전역 객체는 언어 자체나 호스트 환경에 기본 내장되어 있는 경우가 많습니다.
브라우저 환경에선 전역 객체를 window
, Node.js 환경에선 global
라고 부르는데, 각 호스트 환경마다 부르는 이름은 다릅니다.
전역 객체의 이름을 globalThis
로 표준화하자는 내용이 최근에 자바스크립트 명세에 추가되었기 때문에 모든 호스트 환경이 이를 따라야 하죠. Chromium 기반이 아닌 몇몇 브라우저는 아직 globalThis
를 지원하진 않지만, 이에 대한 폴리필(polyfill)을 쉽게 만들 수 있습니다.
본 튜토리얼은 브라우저 환경에서 구동되기 때문에 window
라는 전역 객체를 사용하도록 하겠습니다. 다른 호스트 환경에서 작업하고 계신다면 window
대신 globalThis
를 사용하시면 됩니다.
전역 객체의 모든 프로퍼티는 아래와 같이 직접 접근할 수 있습니다.
전역 변수는 되도록 사용하지 않는 것이 좋습니다. 함수를 만들 땐 외부 변수나 전역 변수를 사용하는 것보다 ‘인풋’ 변수를 받고 이를 이용해 '아웃풋’을 만들어내게 해야 테스트도 쉽고, 에러도 덜 만들어냅니다.
전역 객체를 사용하면 어디서든 접근 가능한 변수를 만들 수 있습니다.
전역 객체엔 Array
와 같은 내장 객체, window.innerHeight
(뷰포트의 높이를 반환함)같은 브라우저 환경 전용 변수 등이 저장되어 있습니다.
전역 객체는 globalThis
라는 보편적인 이름으로 불립니다.
하지만 '관습’에 따라 브라우저에서는 window
, Node.js에서는 global
이라는 이름으로 불릴 때가 많습니다. globalThis
는 제안 목록에 추가 된 지 얼마 안 된 기능이기 때문에, 비 크로미움 기반 브라우저에선 지원하지 않습니다(폴리필을 구현하면 사용할 수 있습니다).
프로젝트 전체에서 꼭 필요한 변수만 전역 객체에 저장하도록 하고, 전역 변수는 가능한 한 최소한으로 사용합시다.
모듈을 사용하고 있지 않다면, 브라우저에서 var
로 선언한 전역 변수는 전역 객체의 프로퍼티가 됩니다.
이해하기 쉽고 요구사항 변경에 쉽게 대응할 수 있는 코드를 구현하려면, window.x
처럼 전역 객체의 프로퍼티에 직접 접근합시다.