스코프란?
var
함수 레벨 스코프를 따른다. 함수의 코드 블록만을 지역 스코프로 인정한다.
let, const
블록 레벨 스코프를 따른다. 모든 코드 블록을 지역 스코프로 인정한다.
var/let
값 재할당 가능
const
상수. 값 재할당 불가능
런타임 이전에 선언 단계와 초기화 단계가 진행되며, 초기화 단계에서 undefined로 변수를 초기화 한다. 따라서 선언문 이전에 변수에 접근해도 참조 에러가 발생하지 않는다.
런타임 이전에 선언 단계만 진행된다. 따라서 선언문 이전에 변수에 접근하려고 하면 참조 에러가 발생한다.
여기서 변수를 참조할 수 없는 구간(스코프의 시작 지점 ~ 선언문)을 일시적 사각지대라고 한다.
중복 선언 시 문법 에러 발생