실행 컨텍스르란 JavaScript 코드가 평가되고 실행되는 환경을 말한다. 이러한 실행 컨텍스트에 대해 왜 알아야 할까?
예를 들어 코드 동작의 원리, 스코프와 클로저, 비동기 처리, 호이스팅 등 JavaScript를 더 깊이 이해하는데 중요하기 때문이다.
실행 컨텍스트는 크게 세 부분으로 구성된다.
var 키워드로 선언된 변수와 함수 선언식에 대한 정보를 담는다. 이 정보는 시간이 지나도 변하지 않는다.
let, const 키워드로 선언된 변수와 함수 표현식에 대한 정보를 담는다. 이 정보는 시간이 지나며 변경 될 수 있다. 또한, 외부 환경에 대한 참조도 포함하고 있어, 이를 통해 스코프 체인을 형성한다.
렉시컬 환경은 '환경 레코드'(Environment Record)와 '외부 환경 참조 (Outer Environment Reference)' 두 부분으로 나뉜다.
함수 호출식에 따라 this의 값이 결정된다. 이는 실행 컨텍스트가 생성될 때 함께 결정되며, 일반 함수에서는 전역 객체를 가리키고, 메서드, 이벤트 핸들러, 생성자 함수에서는 각각 해당 메서드를 소유한 객체, 이벤트 핸들러를 등록한 객체, 생성자 함수에 의해 생성된 인스턴스를 가리킨다.
실행 컨텍스트에 대해 간단하게 정리해보았다.
앞서 말했듯이 실행 컨텍스트는 JavaScript에서 중요한 개념이므로 반드시 숙지하고 있어야 한다.
ps... 아래는 제가 정리한 호이스팅, 콜 스택과 이벤트 루프, 클로저에 대한 글입니다. 실행 컨텍스트와 연관된 부분이 있으니 함께 읽어보시면 좋을 것 같습니다.
: )
Closure
호이스팅