[JS]실행 컨텍스트

Yoon Ki Hyuk·2023년 3월 14일
0

JavaScript

목록 보기
6/6

Excution Context(실행 컨텍스트) 란?

실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체

자바스크립트 코드를 실행하면 전역 컨텍스트가 Call Stack에 담기게되고 실행중 우리가 작성한 함수나 객체 등 을 만나면(선언 될때가 아닌) 해당 환경 정보들을 담은 실행 컨텍스트를 생성하여 Call Stack에 담는다 따라서 전체코드의 환경과 순서를 보장 할 수 있다(LIFO)

실행 컨텍스트의 구조

1. VariableEnvironment

  • 현재 컨텍스트 내에 식별자 정보(EnvironmentRecord) 및 외부환경 정보(OuterEnvironmentReference)가 담겨있다
  • 선언 시점에 LexicalEnvironment의 스냅샷으로 변경사항은 반영되지 않는다
    -> 실행 컨텍스트를 생성할때 VariableEnvironment에 먼저 정보를 담은다음 이를 복사해 LexicalEnvironment에 담는다

2. LexicalEnvironment

  • 초기에는 VariableEnvironment와 같지만 변경사항이 실시간으로 반영된다

environmentRecord : 코드가 실행되기전 현재 컨텍스트와 관련된 코드의 식별자가 저장된다, 즉 코드가 실행되기전 자바스크립트 엔진은 이미 해당 컨텍스트 내부의 변수명을 알고있다(호이스팅)
outerEnvironmentReference : 자신이 선언될 당시의 LexicalEnvironment를 참조한다, 즉 해당 컨텍스트를 생성한 함수의 바깥 환경을 참조한다(순차적으로 접근)

3. thisbinding

  • this 식별자가 바라봐야할 객체, 실행 컨텍스트가 활성화 될 때 this가 지정되지 않은경우 this는 전역객체를 가르킨다
  • method 에서 사용시 해당 method의 instance, object를 가르킨다
profile
개발은 낭만이다

0개의 댓글