1장 Record로 호이스팅 이해하기
-> 호이스팅 : 선언문이 마치 최상단에 끌어올려진 듯한 현상
-> 선언문이 있는 코드 라인을 최상단에 끌어 올렸기 때문이 아니라 자바스크립트 엔진이 먼저 전체 코드를 스캔하면서 변수 같은 정보를 실행컨텍스트 어딘가에 미리 기록(레코드)
-> 환경레코드(Environment Record) : 식별자와 식별자에 바인딩된 값을 기록하는 객체
생성 단계 : 실행컨텍스트 생성, 선언문만 실행해서 환경 레코드에 기록
실행 단계 : 선언문 외 나머지 코드 순차적 실행(환경 레크드 참조 또는 업데이트)
let이나 const로 선언한 경우 선언 라인 이전에 식별자를 참조할 수 없음(일시적 사각지대) -> 선언 이전에 참조할 수 없도록 언어 차원에서 보완
var 키워드로 변수 선언 시 선언과 초기화가 동시에 이루어짐
함수 표현식 : 변수에 함수를 담는 것으로, 변수 호이스팅과 동일하게 동작
함수 선언 function -> 선언과 동시에 완성된 함수 객체를 생성해서 환경레코드에 기록
-> 함수 선언문 : 선언과 동시에 함수가 생성되어 선언 전에도 함수를 사용할 수 있음
2장 Outer로 스코프체이닝 이해하기
-> Outer의 정식 명칭 : 외부 환경 참조(Outer Environment Reference)
식별자 결정 : 코드에서 변수나 함수의 값을 경정하는 것
변수 쉐도잉 : 동일한 식별자로 인해 상위 스코프에서 선언된 식별자의 값이 가려지는 현상
스코프 체인 : 식별자를 결정할 때 활용하는 스코프들의 연결리스트
-> 스크프 체이닝 : 연결리스트 타고타고 움직이는 것
3장 : 실행컨텍스트 정리
-> 코드를 실행하는데 필요한 환경(코드 실행에 영향을 주는 조건이나 상태)을 제공하는 객체
-> 식별자 결정을 더욱 효율적으로 하기 위한 수단