TIL/JS

알아야 하는 전역 객체

saramnim 2023. 2. 23. 17:06
728x90

전역 객체에 대해 알아보자!

전역 객체

코드가 실행되기 이전 단계에 JS엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며 어떤 객체에도 속하지 않은 최상위 객체

  • 브라우저 환경: window, self, this, frames
  • Node.js 환경: global

전역 객체는 표준 빌트인 객체와 환경에 따른 호스트 객체, var 키워드로 선언한 전역 변수전역 함수를 프로퍼티로 갖는다.
=> 전역객체는 계층적 구조상 어떤 객체에도 속하지 않은 모든 빌트인 객체의 최상위 객체
= 전역 객체는 어떤 객체의 프로퍼티도 아니며 객체의 계층적 구조상 표준 빌트인 객체와 호스트 객체를 프로퍼티로 소유한다

window.parseInt('F',16);
parseInt('F',16);
window.parseInt === parseInt;    // true
  • 전역 객체를 생성할 수 있는 생성자 함수는 제공되지 않는다.
  • 전역 객체의 프로퍼티를 참조할 때 window나 global은 생략 가능
var foo = 1;    // var 키워드로 선언한 전역 변수
console.log(window.foo);    // 1
bar = 2;    // 암묵적 전역, 전역 객체의 프로퍼티
console.log(window.bar); // 2
function barfoo() { return 3;}    // 전역 함수
console.log(window.barfoo());    // 3
  • 전역 객체는 표준 빌트인 객체를 프로퍼티로 갖는다.
  • JS 실행환경에 따라 추가적으로 프로퍼티와 메서드를 갖는다.
    • 브라우저 환경: 클라이언트 사이드 Web API를 호스트 객체로 제공
    • Node.js 환경: 고유의 API를 호스트 객체로 제공
  • var 키워드로 선언한 전역 변수, 선언하지 않은 변수에 값을 할당한 암묵적 전역, 전역 함수전역 객체의 프로퍼티가 된다.
let foo = 123;
console.log(window.foo);    // undefined
  • let이나 const로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다.
    => window.foo처럼 접근 불가능
    => 보이지 않는 개념적인 블록(전역 렉시컬 환경의 선언적 환경 레코드) 내에 존재하게 된다.
  • 브라우저 환경의 모든 JS코드는 하나의 전역 객체 window 공유
    여러개의 script를 통해 JS 코드를 분리해도 하나의 전역 객체 window를 공유하는 것은 변함이 없다.
    = 분리되어 있는 JS 코드가 하나의 전역을 공유

전역 객체는 몇 가지 프로퍼티와 메서드를 가지고 있다.
전역 객체의 프로퍼티와 메서드는 전역 객체를 가리키는 식별자 window, global을 생략해 참조/호출할 수 있으므로 전역 변수와 전역 함수처럼 사용할 수 있다.

 

본 게시글은 모던자바스크립트 Deep Dive - 자바스크립트의 기본 개념 책을 읽고 정리했습니다.
더 자세한 내용은 책을 구매해보시길 권장드립니다!
728x90
반응형