본문 바로가기
TIL/JS

알아야 하는 전역 객체

by saramnim 2023. 2. 23.
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
반응형

댓글

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."