실행할 코드에 제공할 환경 정보들을 모아놓은 객체로, 자바스크립트의 동적 언어로서의 성격을 가장 잘 파악할수 있는 개념입니다.
스택
은 출입구가 하나 뿐인 깊은 우물 같은 데이터 구조로 가장 마지막에 저장한 것을 가장 먼저 꺼내게 된다.
큐
는 양쪽이 모두 열려있는 파이프형태의 데이터 구조로 가장 처음 저장한 것을 가장 먼저 꺼내게 되는 구조이다.
실행컨텍스트는
동일한 환경
에 있는 코드들을 실행할 때 필요한 환경정보들을 모아 컨텍스트를 구성하고, 이를콜스택
구조로 데이터를 저장하고 가장 위에 쌓여있는 컨텍스트와 관련 있는 코드들을 실행하는 식으로 저넻 코드의 환경과 순서를 보장한다.
여기서 동일한 환경, 즉 실행컨텍스트를 구성할 수 있는 방법으로 전역공간, eval() 함수, 함수 등이 있습니다.
자동으로 생성되는 전역공간을 제외하면 함수를 실행하는 것이 가장 일반적인 실행 컨텍스트를 구성하는 방법 입니다.
호이스팅
이라는 개념이 등장하게 되는데 호이스팅은 이후에 따로 기록해 보겠다. 식별자의 유효범위를 안에서부터 바깥으로 차례로 검색해나가는 것
outerEnvironmentReference는 현재 호출된 함수가 선언될 당시
의 LexicalEnvironment를 참조한다.
선언시점의 렉시컬 환경을 계속 찾아 올라가면 마지막엔 전역 컨텍스트의 렉시컬 환경이 있다.
가장 가까운 요소부터 차례대로만 접근할 수 있으며 다른순서로 접근하는 것은 불가능 하다. 이러한 특성때문에 여러 스코프에서 동일한 식별자를 선언한 경우에는 무조건 스코프 체인 상에서 가장 먼저 발견되 식별자에만 접근할수 있다.
전역컨텍스트에서는 전역스코프에서 생성된 식별자에만 접근 할수있다.
this로 지정된 객체가 저장
되며, 실행 컨텍스트 활성화 당시에 this 지정되지 않은 경우에는 전역객체가 저장되며 그 밖에는 함수를 호출하는 방법에따라 this에 저장되는 대상이 다릅니다.