실행 컨텍스트
동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아놓은 것.
수집 순서
1 . 전역 - 브라우저에서 자동으로 실행하기 때문에 JS 파일이 열리는 순간 활성화된다.
2 . (선언이 아닌) "호출되는 함수" 순서.
함수가 호출되면, 그 함수에 관련된 환경정보를 수집해서 실행 컨텍스트를 생성하고, 콜스택에 담는다.
그러면 기존에 실행되던 코드는 중단되고, 지금 담긴 컨텍스트가 실행된다.
그리고 제일 처음에 담겼던 전역 컨텍스트까지 종료되면 콜스택은 실행해야 할 코드가 없는 빈 상태가 된다.
기존에 실행되던 코드는 중단되고 ::의 이유
자바스크립트는 싱글스레드 언어로 콜스택이 하나이기 때문에 콜스택에 새로운 컨텍스트가 쌓이면 새로운 컨텍스트가 기존 컨텍스트보다 먼저 실행되고 , 새로운 컨택스트가 종료되어야 기존 컨텍스트가 실행되기 때문!!
환경정보
실행중인 컨텍스트와 관련된 환경 정보
처음에 Variable Environment 가 생성되고 , 같은 초기 내용이 복사되어 Lexical Environment가 생성된다.
그리고 이후로는 계속 Lexical Environment를 활용하여 처음 환경정보인 Variable Environment 와는 다른 내용을 갖게된다.
1. Variable Environment
최초 실행시의 스냅샷 (읽기만 가능한 특정 시간의 가상 복제 파일) 을 유지한다.
- Environment Record ( 스냅샷 )
- Outer environment Reference ( 스냅샷 )
2. Lexical Environment
식별자와 변수가 매칭되는 곳
- Environment Record : 현재 코드와 관련된 식별자 정보들이 저장된다. ➡︎ 호이스팅과 관련
- Outer environment Reference : 현재 호출된 함수가 선언될 당시의 외부 Lexical Environment을 참조한다. ➡︎ 스코프체인과 관련
정리하자면 ,
위와같이 실행 컨텍스트와 환경정보에 대해 정리해보았다.
컨텍스트는 함수가 선언이 아닌 호출될때 그 환경정보가 수집되어 생성되어 콜스택에 담긴다.
수집되는 순서로는 일단 전역 컨택스트는 제일 처음에 수집되어 마지막에 종료되며,
나머지 실행 컨텍스트는 함수가 호출될때마다 환경정보와 함께 생성되어 콜스택에 쌓이며,
나중에 실행된 컨텍스트가 먼저 종료되는 형태로 실행된다.
그리고 컨텍스트와 함께 존재하는 환경정보는 매개변수의 이름, 선언한 함수 등의 식별자 정보 등을 갖고있으며,
컨텍스트으로 인해 호이스팅, 스코프 체인이라는 개념을 이해할 수 있는데 ,
이 내용은 다음에 이어서 정리하도록 하겠다.
이어지는 내용 ↓참고
✔️참고
[ 코어 자바스크립트 - 저자 정재남 ]의 2장 실행컨텍스트의 일부를 보고 정리한 내용입니다.
'JavaScript' 카테고리의 다른 글
[Javascript] 자바스크립트의 this (0) | 2020.11.11 |
---|---|
[Javascript] 실행 컨텍스트와 호이스팅, 스코프체인 (0) | 2020.11.03 |
[ Javascript 모듈화 ] AMD, CommonJs, ES6의 모듈 (0) | 2020.09.12 |
[Javascript] 배열에 프로퍼티 추가 (0) | 2020.09.06 |
ES6(ECMAScript6) 정리 (0) | 2020.09.05 |