1-1. var는 변수 중복 선언을 허용하기에 의도치 않은 변수값의 변경이 일어날 가능성 존재
var test = "test";
console.log(test); // test
var test = "varvar";
console.log(test) // varvar
1-2. let과 const는 변수 중복 선언 불가
let test = "test";
console.log(test); // test
let test = "varvar";
console.log(test)
// Uncaught SyntaxError: Identifier 'test' has already been declared
1-3. let과 const의 차이점은 변수값 재할당 여부
let은 변수에 재할당 가능!
let test = "varvar";
console.log(test); // varvar
test = "testtest";
console.log(test); // testtest
const은 변수에 재할당 불가능!!
const test = "varvar";
console.log(test); // varvar
test = "testtest";
console.log(test);
// Uncaught TypeError: Assignment to constant variable
표로 정리하자면, 아래 내용과 같다.

var로 선언된 변수와 달리 let으로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError) 발생var로 선언된 변수는 선언 단계와 초기화 단계(undefined로 초기화)가 한번에 이루어짐let으로 선언된 변수는 선언 단계와 초기화 단계가 분리되어 진행됨참고 블로그