var 키워드로 선언한 전역 변수와 함수 선언문으로 정의된 전역 함수는 객체 환경 레코드
함수 선언문으로 정의한 함수가 평가되면 함수 이름과 동일한 이름의 식별자를 객체 환경 레코드에 바인딩된 BindingObject를 통해 전역 객체에 키로 등록하고 생성된 함수 객체를 즉시 할당한다. 즉, 함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출할 수 있다.
var로 선언한 전역 변수는 “선언 단계”와 “초기화 단계"가 동시에 진행됨, 전역 객체에 변수 식별자를 키로 등록한 다음, 암묵적으로 undefined를 바인딩
let, const로 선언한 전역 변수는 선언적 환경 레코드에 등록됨. 그러므로 전역 객체의 프로퍼티가 되지 않음. 즉 런타임에 실행 흐름이 변수 선언문에 도달하기 전까지 일시적 사각지대에 빠짐.
// 초기화 단계가 진행되기 전까지 y 변수에 <uninitialized> 상태
const y = 2; // 초기화 한 후 y 변수에 2 할당
첫 TIL을 작성해봤는데 많은 정보들 중 무얼 적을지 간추리는 게 더 힘들었다. 기본적인 정의나 자세한 내용들은 다른 글에서 잘 정리했기 때문에 나는 한 번씩 흘리고 갔을(?) 그런 정보를 적고 이해하기 어려웠던 개념들이 있으면 어떻게 이해했는지 나의 관점에서 작성하도록 해봐야겠다.