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
반응형