몽땅뚝딱 개발자

[Javascript] 환경레코드와 글로벌 환경 본문

Development/Javascript

[Javascript] 환경레코드와 글로벌 환경

레오나르도 다빈츠 2021. 7. 7. 21:07

출처

 

자바스크립트 중고급: 근본 핵심 이해 - 인프런 | 강의

4개 강좌로 구성된 자바스크립트 바이블 강좌의 2번째 강좌입니다. 자바스크립트 엔진 이해를 통해 자바스크립트에 최적화된 프로그램을 개발할 수 있습니다. 자신 있게 시스템을 설계할 수 있

www.inflearn.com

 

 


 

🚀 환경레코드와 글로벌 환경

 

◽ 환경 레코드의 종류
- 선언적 환경 레코드(DER, Declarative Environment Record)
function, 변수, catch 문에서 사용한다. 정적인 것은 이곳에 설정한다.


- 오브젝트 환경 레코드(OER, Object Environment Record)
글로벌 함수와 변수, with 문에서 사용한다. 동적인 것은 이곳에 설정한다.

 

실행 콘텍스트(EC): {
    렉시컬 환경 컴포넌트(LEC): {
        환경 레코드(ER): {
            선언적 환경 레코드(DER): {
                point: 123
            },
            오브젝트 환경 레코드(OER): {}
        },
        외부 렉시컬 환경 참조(OLER): {}
    },
    변수 환경 컴포넌트(VEC): {},
    this 바인딩 컴포넌트(TBC): {}
}

 


 

◽ 글로벌 환경(Global Environment)

글로벌 오브젝트에서 사용하며, 렉시컬 환경 컴포넌트와 형태가 같다.

함수에서 var 키워드를 사용하지 않고 변수를 선언하면 글로벌 오브젝트에 설정되기 때문에

동적으로 함수와 변수를 바인딩한다.

실행 콘텍스트(EC): {
    글로벌 환경(GE): {
    	// 선언적 환경 레코드는 필요없다.
        환경 레코드(ER): {
            오브젝트 환경 레코드(OER): 글로벌 오브젝트
        },
        // 글로벌 오브젝트는 어디에 속하지 않으므로 null이 된다.
        외부 렉시컬 환경 참조(OLER): null
    },
    변수 환경 컴포넌트(VEC): {},
    this 바인딩 컴포넌트(TBC): {}
}
Comments