Js 엔진이 Javascript 파일을 실행하면
글로벌(전역) 실행 컨텍스트 가 생성됩니다.
글로벌 컨텍스트가 최초 한번 생성된 이후 종료 될떄 까지 유지가 됩니다.
글로벌 컨텍스트가 생성이 되어, js가 실행되는 동안
함수 호출
eval()
실행
단일 쓰레드 언어이기에 실행스택 맨 위에 실행 컨텍스트를 실행합니다.
실행 완료한 실행 컨텍스트에 슬행 스택에서 pop 되어서 소멸됩니다.
자바스크립트 실행 컨텍스트는 생성단계와 실행단계 2가지 단계가 있습니다.
생성 단계에서 scope chaian this binding 변수/함수/인자 들을 생성합니다.
생성단계에서 변수 선언 및 함수 선언 hosting 합니다. (메모리에 해당 컨텍스트 최상단에 배치하는 과정일 뿐입니다.)
생성 단꼐에서 변수 정보를 매핑하는데 var는 undefined 매핑. let/const 는 초기화 되지 않은 기본값(uninzialized)이 매핑 됩니다.
실행단계에서 let const 접그시 refrence error가 발생합니다. 발생하는 이유는 TDZ 때문입니다. Temporal Dead Zone ㅇ.. 일시적 사각지대 입니다.
변수가 실제 실행단계에서 할당되기까지 머무르는 곳입니다. → environment Record 단계에서 매핑될때 선언단계와 초기화 단계가분리되어서 진행되기 떄문에 실행단계에서 할당되기 전까지 접근이 불가능합니다.
실행컨텍스트 생성단계에서는 아래와 같은 2가지 속성을 생성합니다.