자바스크립트의 실행 컨텍스트 는
실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다. 자바스크립트는 어떤 실행 컨텍스트가 활성화되는 시점에 다음과 같은 일을 한다.
이런 현상들 때문에 JS에서는 Javascript만 의 다른 특징을 나타낸다고 한다.
실행 컨텍스트를 이해하기 위해서는,
콜 스택 에 대한 이해가 반드시 필요합니다. 그림을 봅세

Stack : LIFO - 후입선출
Queue : FIFO - 선입선출
실행 컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체.
그 객체, 즉 동일 환경에 있는 코드를 실행 할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고,
이것을 스택의 한 종류인
콜스택에 쌓아올린다.
가장 위에 쌓여있는 컨텍스트와 관련된 코드를 실행하는 방법으로 코드의 환경 및 순서를 보장할 수 있다.
우리가 사용하는 함수만 생각해주자
=> 컨텍스트의 구성은 함수이다.
// ---- 1번
var a = 1;
function outer() {
function inner() {
console.log(a); //undefined
var a = 3;
}
inner(); // ---- 2번
console.log(a);
}
outer(); // ---- 3번
console.log(a);
순서
1.코드가 실행되고 ->
2. 전역
3. 전역 중단이 일어남과 동시에 outer함수 실행(전역 안에 있는 함수가 실행 )
4. outer 중단
5. inner함수 실행(outer 안에 있는 함수 실행 )
6. inner함수 실행종료
7. outer함수 재개
8. 전역 재개
9. 전역이 콜스택에서 out함
10. 코드 종료
이것을 콜스택과 연관 지어 보면,
코드가 실행 되면
전역이 stack에 올려저서 실행하려고 했는데
outer 함수를 만나자 마나 outer 함수가 stack에 in 했고
inner함수를 만나자 마자 stack에 in해서 실행이 다 되고 스택 바깥으로 out 했다.
그리고 outer 함수가 재개 하고, outer 함수가 끝나면 stack에서 out 했고
전역이 다시 재개 하다가, 전역이 끝나면 stack에서 out 한다.
그러고 나서 코드가 종료 된다.
결국은 특정 실행 컨텍스트가 생성되는(또는 활성화되는) 시점이 콜 스택의 맨 위에 쌓이는(노출되는) 순간을 의미하며,
곧, 현재 실행할 코드에 해당 실행 컨텍스트가 관여하게 되는 시점을 의미한다고 받아들이자
내가 이해한 것으로 적용 하자면