1-1. 전역 변수 문제
블록 { } 내부에 선언한 변수가 바깥에서도 접근 가능한 상황이 발생함for (var i = 0; i < 4; i++) {
console.log(i); // 0, 1, 2, 3
}
console.log(i); // 4 --> i가 블록 밖에서도 접근한다.

1-2. 중복 선언 가능
변수를 다시 선언해도 에러가 발생하지 않는다.var price = 2000;
var price = 5000;
console.log(price) // 5000

1-3. 호이스팅 문제 (하단 부분에 호이스팅 개념 소개)
console.log(a); // undefined - 2번 줄에서 a를 선언했는데.. 오류가 안나고 undefined..?
var a = 10;
console.log(a); // 10

let은 ES6(2015년)에서 추가되어 var의 문제점을 해결했음!!
2-1. 블록 스코프 지원
for (let i = 0; i < 4; i++) {
console.log(i); // 0, 1, 2, 3
}
console.log(i); // ReferenceError: i is not defined

2-2. 중복 선언 불가
let price = 2000;
let price = 5000; // SyntaxError: Identifier 'price' has already been declared
console.log(price)

2-3. TDZ(Temporal Dead Zone) 도입
console.log(a);
let a = 10; // ReferenceError: a is not defined
console.log(a);
실행 전에 변수와 함수 선언을 코드의 최상단으로 끌어 올린다.console.log(a); // undefined
var a = 10;
console.log(a); // 10
console.log(a);
let a = 10; // ReferenceError: a is not defined
console.log(a);