- 함수 호출시 실행컨텍스트에서 동작하는 과정
- 함수 스코프가 저장하는 정보
- 호이스팅, 클로저의 컨텍스트 내 동작 원리
: 자바스크립트 코드를 실행할 때 필요한 정보들을 저장하고 제공하는 환경
스코프의 정보를 저장하는 환경이다. 현재 실행중인 컨텍스트에서 이 컨텍스트와 관련 없는 코드가 실행되면 새로운 컨텍스트가 생성되어 제어권을 가져간다. 이렇게 생성된 컨텍스트들은 실행 컨텍스트 스택 안에 쌓이게 된다.
위의 두 컴포넌트들은 Environment Records (ER) 형태로 구성되어 있다.
function foo() {
const a = 1;
var b = 2;
console.log(a,b);
}
foo()

ER은 렉시컬 스코프를 기반으로 특정 변수와 함수에 대한 식별자의 정보를 저장한다.
즉, 코드가 실행되면 변수나 함수에 대한 식별자를 선언하고, 코드가 실행될 때마다 선언된 식별자에 값을 할당할 수 있도록 바인딩 하는 것.
모든 ER은 OuterEnv를 가지며, 이 OuterEnv는 상위 렉시컬 스코프에 대한 ER을 참조한다
function foo() {
var a = 1;
function bar() {
console.log(a); // 1
}
bar()
}
foo()

Bar ER은 OuterEnv를 통해 상위 렉스컬 스코프에 대한 Foo ER 참조할 수 있게 된다. 즉 bar 실행 컨텍스트에서 코드가 실행될 때 Bar ER에 a가 없으면 OuterEnv를 통해서 Foo ER에서 a를 찾는 것. 이렇게 OuterEnv를 통해 상위 스코프의 ER에 접근하는 과정을 식별자를 찾을 때까지 반복한다.
