본문 바로가기

4. Programming/4.3 JavaScript

12. 실행 컨텍스트



실행 컨텍스트(Context)는 Scope, Hoisting, this, Function, Closure 등의 동작원리를 담고 있는 원리.

ECMAScript에 따르면 실행 컨텍스트를 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념이라고 정의함.

즉, 실행 가능한 코드가 실행되기 위해 필요한 환경.

  • 전역 코드 : 전역 영역에 존재하는 코드
  • Eval 코드 : Eval 함수 (텍스트로 된 자바스크립트 코드를 실행시킬 수 있는 함수) 
  • 함수 코드 : 함수 내에 존재하는 코드


자바스크립트 엔진은 코드를 실행하기 위해 여러가지 정보를 알고 있어야 하며, 아래와 같음.

  • 변수 : 전역변수, 지역변수, 매개변수, 객체의 프로퍼티
  • 함수 선언
  • 변수의 유효범위(Scope)
  • this
현재 실행 중인 컨텍스트에서 이 컨텍스트와 관련 없는 코드가 실행되면 새로운 컨텍스트가 생성되며, 컨트롤(제어권)이 이동함.
논리적 스택 구조를 가지는 실행 컨텍스트 스택이 생성되며, 스택은 LIFO 의 구조를 가지는 나열 구조

1. 실행 컨텍스트의 3가지 객체 

실행 컨텍스트는 3가지의 객체로 되어 있으며, 각 프로퍼티를 소유함
  • Variable Object : {vars, fucntion declarations, arguments...}
  • Scope Chain : []Variable object, all parent scopes]
  • ThisValue : Context object


1.2 Variable Object (VO/ 변수객체)

실행 컨텍스트가 생성되면 자바스크립트 엔진은 실행에 필요한 여러 정보들을 담을 객체를 생성, 이를 변수객체라고 함.

Variable Object는 변수, 매개변수(parameter)와 인수 정보(arguments), 함수 선언(함수 표현식은 제외)의 정보를 갖고 있음.

1.2 Scope Chain (SC)

스코프 체인(Scope Chain)은 일종의 리스트로서 전역 객체와 중첩된 함수의 스코프의 레퍼런스를 차례대로 저장하고 있음. 
현재 실행 컨텍스트의 활성 객체(AO)를 선두로 하여, 순차적으로 상위 컨텍스트의 활성 객체를 가르키며 마지막 리스트는 전역객체(GO)를 가르킴.
스코프 체인은 식별자 중에서 객체(전역 객체 제외)의 프로퍼티가 아닌 식별자, 즉 변수를 검색하는 메커니즘.

1.3 this value

this 프로퍼티는 this 값이 할당 됨. 



2. 실행 컨텍스트의 생성 과정 

2.1 전역 코드에 진입

컨트롤이 실행 컨텍스트에 진입하기 이전에 유일한 전역 객체(Global Object)가 생성 됨. 
전역 객체는 단일 사본으로 존재하며, 객체의 프로퍼티는 코드의 어떠한 곳에서도 접근이 가능하며, 초기 상태의 전역 객체에는 빌트인 객체(Math, String, Array...)와 BOM, DOM이 설정 되어 있음.

전역 객체가 생성된 이후, 전역 코드로 컨트롤이 진입하면, 전역 실행 컨텍스트가 생성되고 실행 컨텍스트 스택이 쌓임.

2.1.1 스코프 체인의 생성과 초기화 

실행 컨텍스트가 생성된 이후, 가장 먼저 스코프 체인의 생성과 초기화가 실행. 이 때 스코프 체인은 전역 객체의 레퍼런스를 포함하는 리스트가 됨.

2.1.2 Variable Instantiation 실행

스코프 체인의 생성과 초기화가 종료하면, 변수 객체화가 실행 됨.
Variable Object에 프로퍼티와 값을 추가하는 것을 의미 


'4. Programming > 4.3 JavaScript' 카테고리의 다른 글

11. This  (0) 2018.08.22
10. Scope Life-Cycle  (0) 2018.08.15
9. 프로토타입과 객체지향  (0) 2018.08.09
8. 타입 체크  (0) 2018.07.24
7. Function (함수)  (0) 2018.07.15