실행 컨텍스트는 자바스크립트에서 코드가 실행되는 환경
js 엔진이 코드를 실행할 때, 그 코드가 실행될 때의 환경을 정의하고 관리하기 위해 존재하는 것
전역 실행 컨텍스트
자바스크립트가 처음 실행될 때 생성되는 컨텍스트
프로그램이 종료될 때까지 유지되며, 전역에 선언된 변수나 함수 모두 포함
전역 실행 컨텍스트에서 선언된 함수와 변수는 프로그램 내 어디서든 접근 가능
기본적으로 JS는 싱글 스레드여서 전역 실행 컨텍스트는 1개만 존재
함수 실행 컨텍스트
함수가 호출될 때마다 생성 되는 컨텍스트
각 함수는 자신만의 실행 컨텍스트를 가지며, 이 컨텍스트 내에서 선언된 변수와 함수는 해당 함수 내에서만 유효
함수가 종료되면 그 실행 컨텍스트도 함께 사라짐
실행 컨텍스트의 구성 요소
변수 객체, 스코프 체인, this
변수객체
실행 컨텍스트 내에서 사용되는 변수와 함수 선언을 저장하는 공간
전역 컨텍스트에서는 전역 객체가 변수 객체의 역할
함수 컨텍스트에서는 활성화 객체가 변수와 매개변수를 관리
스코프 체인
현재 실행중인 컨텍스트와 외부 렉시컬 환경의 연결을 유지
변수를 참조할 때 현재 컨텍스트에서 찾지 못하면 외부 환경으로 범위를 넓혀가며 변수를 찾음
this
실행 컨텍스트에 따라 참조하는 객체가 달라짐
전역 컨텍스트 - this가 전역 객체 가리킴
함수 컨텍스트 - 함수 호출 방법에 따라 달라짐
