-> 소스코드 실행에 필요한 정보, 변수나 함수를 실행컨텍스트 내 스코프에서 검색
전역 코드, 함수 코드, eval 코드, 모듈 코드 실행될 때 각각의 실행 컨텍스트가 구성됨
실행 컨텍스트는 무엇이고 어떤 역할을 하는가!?
모든 코드는 실행 컨텍스트에 의해 실행되고 관리됨
실행 컨텍스트 스택 -> 코드 실행 순서 관리(스택 방식으로)
소스코드 평가 -> 실행 컨텍스트 생성
실행 컨텍스트를 구성하며 스코프와 식별자를 관리
스코프를 구분하여 식별자를 등록 및 관리 하는 저장소 역할
구성
전역 실행 컨텍스트 생성
전역 렉시컬 환경 생성
2-1. 전역 환경 레코드 생성
전역 스코프 역할 -> var와 let, const를 구분해줌(var는 전역객체에 바인딩됨)
2-1-1. 객체 환경 레코드 생성
var, 함수 선언문 by BindingObject, 전역 객체의 프로퍼티와 메서드가 됨
var -> 선언, 초기화 동시에 진행 -> 전역 객체의 등록됨 -> 코드 실행 전 참조 시 undefined 반환 => 변수 호이스팅 원인
function ~ -> 평가할 때 전역 객체로 즉시할당 -> 함수 선언문 이전에 호출O
2-1-2. 선언적 환경 레코드 생성
2-2. this 바인딩
[[GlobalThisValue]]
에서 참조2-3. 전역 외부 렉시컬 환경에 대한 참조