실행 컨텍스트(execution context)는 코드를 실행하는데 필요한 환경을 제공하는 객체이며, 여기서 환경이란 코드 실행에 영향을 주는 조건이나 상태를 의미한다. 그리고 실행 컨텍스트는 식별자 결정을 더욱 효율적으로 하기 위한 수단으로서 필요한 정보를 한데 모아 제공하는 객체이다.
자바스크립트는 어떤 실행 컨텍스트가 활성화되는 시점에 선언된 변수를 위로 끌어올리고(호이스팅), 외부 환경 정보를 구성하고, this값을 설정하는 등의 동작을 수행하는데, 이로인해 다른 언어에서는 발견할 수 없는 특이한 현상들이 발생한다.
✨ 아래 예제를 통해서 콜 스택에 실행 컨텍스트가 쌓이는 과정 확인하기!
var a = 1;
function outer() {
function inner() {
console.log(a);
var a = 3;
}
inner();
console.log(a);
}
outer();
console.log(a);


// 함수 표현식
study();
const study = () => {
// do study
};
// 함수 선언문
study();
function study () {
// do study
};

출처 : 코어 자바스크립트 (도서)
https://www.youtube.com/watch?v=EWfujNzSUmw (유튜브)
https://www.theteams.kr/teams/6500/post/73683
사진 출처 : https://reese-dev.netlify.app/javascript/execution-context/