실행컨텍스트란?
- context : 이 자리에서 어떤 역할을 수행하는지 알기 위해서는 그 코드에 영향을 주는 주변 코드나 변수들을 파악해야 한다. 그렇게 영향을 주는 환경을 일컬어 context라고 한다. 해당 코드의 배경이 되는 조건/환경
- 실행 컨텍스트 : 어떤 조건/환경을 지니는 코드 뭉치를 실행할 때 필요한 조건/환경정보
- 자바스크립트에서 동일한 조건을 지닐 수 있는 조건 : 전역공간, 함수, eval, module
- 자바스크립트는 함수에 의해서만 context를 구분할 수 있다. 즉, 함수를 실행할 때 필요한 조건, 환경정보를 담은 객체
실행 컨텍스트의 내부의 환경정보
- 현재 환경과 관련된 식별자 정보들
- VariableEnvironment : 식별자 정보 수집, 변화 반영x
- LexicalEnvironment(Environment Record, outer Environment Reference)
- 각 식별자의 데이터 추적, 변화 반영ㅇ
- 어떤 실행 컨텍스트의 환경정보가 담긴 사전이라고 생각하면 됨
- 실행컨텍스트를 구성하는 환경정보들을 모아 사전처럼 구성한 객체를 의미한다
- Environment Record: 현재 문맥의 식별자 정보, 실행 컨텍스트가 최초 실행될 때 하는 일,
- hoising : 현재 컨텍스트의 식별자 정보들을 수집해서 environmentRecord에 담는 과정, 실제 일어나는 현상이 아니고 environment Record 과정을 좀 더 쉽게 이해하기 위해서 만든 허구의 개념
- outer Environment Reference : 외부 환경에 대한 참조, scope chain 현상, 실행 컨텍스트가 수집해 놓은 정보만 접근을 할 수가 있음 -> 변수의 유효범위(스코프)