var x = 1;
if (true) {
var x = 10;
}
console.log(x) // 10
// 함수문이 아닌곳에서의 var 선언은 전역변수이기 때문에 x는 10으로 재할당.
let은’선언’ 과 ‘초기화’ 가 분리되어 진행됨.
런타임 이전에 선언은 먼저 되지만 초기화는 변수 선언문에 도달했을때 초기화됨.
그래서 선언과 초기화 사이의 일시적 사각지대(TDZ) 가 만들어진다.
선언과 초기화를 동시에 해야함.
const foo = 1
재할당 금지