<자바스크립트 Javascript> 실행 컨텍스트
- 실행 컨텍스트(Execution Context)
실행 컨텍스트는 쉽게 말해 자바스크립트에서 실행 가능한 코드가 실행되기 위해 필요한 환경을 말한다. 실행 가능한 코드란, 전역 코드와 Eval 코드(eval 함수로 실행되는 코드), 함수 코드(함수 내에 존재하는 코드)를 말한다. 실행 컨텍스트는 scope, hoisting, this, function, closure 등의 동작원리를 담고 있어 자바스크립트의 핵심원리라 할 수 있다.
자바스크립트 엔진은 코드를 실행하기 위해 실행에 필요한 여러가지 정보를 알고 있어야 하는데, 그 정보라 함은 변수, 함수 선언, 변수의 유효범위, this와 같은 것들이다.
- 실행 컨텍스트의 3가지 객체
실행 컨텍스트는 일반적으로 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념이다. 다만 물리적으로는 객체의 형태를 갖기 때문에 Variable object, Scope chain, thisValue의 3가지 프로퍼티를 소유한다.
1) Variable object(VO/변수객체)
실행 컨텍스트가 생성되었을 때, 자바스크립트 엔진이 실행에 필요한 여러 정보를 담는 객체이다. 변수, 매개변수와 인수정보, 함수 선언(표현식 제외)를 담는다. 다만 전역 컨텍스트의 경우와 함수 컨텍스트의 경우 가리키는 객체가 달라진다. 전역 컨텍스트의 경우에는 전역 객체(Global object)를, 함수 컨텍스트의 경우에는 활성 객체(Activation Object)를 가리키며 arguments object가 추가된다.
2) Scope Chain(SC)
스코프 체인이다. 일종의 리스트로, 전역 객체와 중첩된 함수의 스코프 레퍼런스를 차례로 저장한다. 전역 객체 또는 활성 객체의 리스트를 가리킨다. 자바스크립트 엔진이 스코프 체인을 통해 렉시컬 스코프를 파악한다. 스코프 체인을 통해 하위 함수에서 시작하여 상위 함수의 스코프와 전역 스코프까지 참조가 가능하다. 이렇게 꼬리에 꼬리를 물고 체인처럼 연결되어진 스코프를 검색이 가능하도록 만들기 때문에 스코프 체인이라 불리는 것이다.
3) this value
this 프로퍼티에는 this 값이 할당되며, 이는 함수 호출 패턴에 따라 결정된다.
참고 : poiemaweb 웹사이트