3.4.1 global
먼저 global 객체입니다. 브라우저의 window와 같은 전역 객체이며, 전역 객체이므로 모든 파일에서 접근할 수 있습니다. 또한, window.open 메서드를 그냥 open으로 호출할 수 있는 것처럼 global도 생략할 수 있습니다. 이전 절에서 사용했던 require 함수도 global.require에서 global이 생략된 것입니다. 노드 콘솔에 로그를 기록하는 console 객체도 원래는 global.console입니다.
global 객체 내부에는 매우 많은 속성이 들어 있습니다. 이 절에서 배울 내용들은 global 객체 안에 있으며, 내부를 보려면 REPL을 이용해야 합니다.
Note ≣ ⎮ window, document 객체와 globalThis
노드에는 DOM이나 BOM이 없어 window와 document 객체를 노드에서 사용할 수 없습니다. 노드에서 window 또는 document를 사용하면 에러가 발생합니다. 따라서 이 둘을 아우르는 globalThis 객체가 만들어졌습니다. 브라우저 환경에서는 globalThis가 저절로 window가 되고, 노드에서는 globalThis가 저절로 global이 됩니다.
콘솔
$ node
> global
{
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
...
}
> globalThis
{
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
...
}
> globalThis === global
true
> global.console
{
log: [Function: log],
warn: [Function: warn],
dir: [Function: dir],
...
}