키워드
콜스택, 코드 실행 시 필요한 환경 정보
실행할 코드에 제공할 환경 정보들을 모아놓은 객체.
실행 컨텍스트가 실행될 때 마다, 자동으로 콜스택에 쌓이게 된다. 보통 함수 호출에 의한 컨텍스트를 자주 보게 된다.
하나의 실행 컨텍스트에는, 다음과 같은 정보로 포함되어 있다.
variable environment
environment records
: 현재 컨텍스트 내의 호이스팅 가능한 변수에 대한 정보outer environment reference
: 외부 환경 정보lexical environment
environement records
: let
, const
로 선언된 변수, 함수표현식도 포함하여 저장outer environment reference
: variable environement
를 저장.this binding
: 실행 컨텍스트 안에서, 함수를 호출한 스코프에 접근할 수 있도록 도와주는 역할. 호출 위치에 따라 다르기 때문에, 유의하여 사용해야한다.variable environment
와 lexical environment
의 차이는 변화를 하는 가 하지 않는가의 차이라고 한다. 초기 variable environment
와 lexical environment
의 데이터는 동일하나 실행 컨텍스트 내에서 코드가 실행될 때, variable environment
는 절대 변하지 않고 lexical environment
의 값은 변화 할 수 있다고 한다.
역시 어렵다. 지금은 대략적으로 이런 게 있다 정도만으로 이해하고 가자.
var a = 1; // 전역 컨텍스트
function outer () { // outer 컨텍스트
function inner () { // inner 컨텍스트
console.log(a); // undefined
var a = 3;
console.log(a); // 3
}
inner();
console.log(a); // 1
}
outer();
console.log(a); // 1