[프론트엔드 면접]실행 컨텍스트(execute context)란?
실행 컨텍스트(excute context)란?
- 실행할 코드에 대해 제공할 환경 정보들을 모아놓은 객체
- 자바스크립트 코드가 평가되고 실행되는 환경
- LIFO(Last In First Out) 스택 구조로 콜 스택에 쌓이며 실행 순서를 보장
실행 컨텍스트(excute context)는 언제 생성?
- 전역 컨텍스트
- 자바 스크립트 파일이 로드될 때 전역 컨텍스트가 생성됨
- 이는 종료될 때까지 실행
- 함수 컨텍스트
- 함수가 호출 될때 마다 그 함수의 컨텍스트가 각각 순차적으로 쌓임
- eval()
- 문자열로 된 스크립트 코드를 실행하는 함수
- 보안적 취약하기 때문에 요즘엔 안씀 (evail is evil)
실행 컨텍스트(excute conetext)의 구성
- 변수 환경(Variable Environment)
- var로 선언된 변수와 함수 선언식으로 정의된 함수들, 그리고 this 값 등이 저장
- 최초 실행시의 스냅샷을 유지한다 (변경 사항을 반영하지 않는다)
- 렉시컬 환경(Lexical Environment)
- 변수환경(Variable Environment)의 정보를 복사해서 저장
- 실시간으로 변경된 정보가 반영
- let, const 키워드로 선언된 변수와 함수 표현식으로 정의된 함수들,그리고 렉시컬 스코핑에 따른 외부 환경 참조 등이 저장
- environmentRecord
- outerEnvironmentReference(Reference to the outer environment)
- 현재 환경에서 변수에 대한 정보를 찾지 못한다면 외부의 환경에서 정보를 찾을 수 있음
- this 바인딩(This Binding)
- 현재 실행 컨텍스트에서 this가 참조하는 객체를 나타냄
- 지정 하지 않을 시
global