실행 컨텍스트(Execution Context)

Breadman·2021년 10월 24일
0

기초공부

목록 보기
2/2

정의

코드를 실행하기 위해 필요한 환경으로, LIFO 특징을 갖는 Stack으로 관리된다.
코드가 실행되면 전역 실행 컨텍스트부터 스택에 쌓이게 되고, 함수가 실행되면 그 위에 해당 함수의 실행 컨텍스트가 쌓인다. 함수실행이 끝나면 해당 함수의 실행 컨텍스트도 파기된다. C언어의 CallStack과 그 흐름이 유사하다.

실행 컨텍스트는 전역코드, eval(), 함수 내부코드를 실행할 때 생성된다.

스코프 체인 생성 및 초기화 -> 변수객체화(Variable Instantiation) -> this값 결정 순으로 할당된다.

구성요소

  • 변수객체(Variable Object)
  • 스코프 체인(Scope Chain)
  • this

변수객체(Variable Object)

코드 실행에 필요한 여러 정보들이 담긴 객체다. 실행 컨텍스트가 생성되면 JS엔진은 변수객체를 생성한다.

전역 컨텍스트의 경우, 전역객체(global 혹은 window)를 가리키고, 함수 컨텍스트의 경우 매개변수 및 사용자 정의 변수 등을 담은 활성 객체를 가리킨다.

변수 객체화(Variable Instantiation) 단계에서 값이 할당되며, 1) 매개변수 설정 2) 함수 호이스팅 3) 변수 호이스팅 순으로 진행된다.

스코프 체인(Scope Chain)

해당 컨텍스트에서 참조할 수 있는 변수 혹은 함수 등의 정보를 담고 있는 변수객체의 리스트.
함수 컨텍스트의 경우, 자신의 변수객체부터 시작해 Stack에 쌓인 컨텍스트의 변수객체를 거쳐, 전역객체까지 도달하는 리스트를 갖는다.
코드 실행 중 변수를 만나면 현재 컨텍스트의 변수객체에서 검색해보고, 만약 검색에 실패하면 스코프 체인을 따라 순서대로 검색을 이어간다. 전역객체까지 검색해도 찾지 못하면, Reference Error를 발생시킨다.
자신을 포함하는 외부 함수의 실행 컨텍스트가 소멸되어도, 스코프 체인이 가리키는 외부 함수의 변수객체는 참조할 수 있는데, 이를 클로저(Closure)라고 한다.
함수의 숨겨진 프로퍼티로 존재하는 [[Scope]]가 스코프 체인이다.

this

this에 해당하는 값이 담긴 공간.

참고한 사이트

profile
빵돌입니다. 빵 좋아합니다.

0개의 댓글