JS 실행 컨텍스트
특징: 식별자 결정을 효율적으로 하기 위함
실행 컨텍스트 과정
- Call Stack에 Glovbal Execution Context 쌓임
- 실행된 함수의 Execution Context가 쌓임
Record
- Hoisting : 선언문이 맨위로 끌어올려진 것 같은 현상
- JS가 미리 코드를 스캔해서 Record에 선언문을 미리 기록함
- Varicable Hoisting
- var
- 생성 단계: record에 [변수명: undefined]로 저장
- 실행 단계: 순차적으로 코드를 실행
- let, const
- 생성 단계: record에 [변수명: ]로 저장 → exception이 생김
- Function Hoisting
Outer: scope chaining
: 외부환경 참조 (lexical environment, 정적 환경)
- 식별자 결정
- 코드에서 동일한 변수명에 값을 어떻게 넣을 것인지 결정
- global → fumction → inner function 이런식으로 서로를 참조할 수 있도록 outer 존재