함수의 실행, 호이스팅, 렉시컬 환경, 클로저 등의 개념들을 관통하는 하나의 큰 개념
스크립트가 처음 실행될 때 생성되는 실행 컨텍스트
함수가 호출될 때마다 생성되는 실행 컨텍스트
eval() 함수가 실행될 때 생성되는 실행 컨텍스트
각 실행 컨텍스트는 자신만의 변수 객체, 스코프 체인, this 등을 가지고 있음
=> 코드의 실행과 관련된 정보를 관리하고, 변수 및 함수의 검색에 사용
실행 컨텍스트는 스택 구조로 관리되며, 코드 실행 중에 새로운 실행 컨텍스트가 생성되면 스택의 맨 위에 쌓임!
함수 실행이 완료되면 해당 실행 컨텍스트가 스택에서 제거되고 이전 실행 컨텍스트로 되돌아감!
변수, 함수, 매개변수 등의 식별자와 그들이 가리키는 값들의 연결을 저장하고 관리
실제 식별자와 그에 해당하는 값을 저장하는 영역
현재 실행 컨텍스트와 관련된 외부 렉시컬 환경의 참조를 가리킴
렉시컬 환경은 함수의 스코프, 변수의 유효 범위, 클로저 등과 관련된 핵심 개념!
함수가 선언된 위치에 따라 스코프가 결정되므로, 렉시컬 환경은 함수의 렉시컬 스코프를 정의하는 데 중요한 역할을 한다!
렉시컬 환경은 실행 컨텍스트 내부에 생성되며, 실행 컨텍스트의 일부로서 관리된다.
각 실행 컨텍스트는 자신만의 렉시컬 환경을 가지며, 스코프 체인을 통해 외부 렉시컬 환경에 접근할 수 있다.