#예시
var a = "kim"
let b = "Ha"
const c = "Min"
console.log(a,b,c)
output : Kim Ha Min
// var을 통해 "kim"이란 데이터를 가진 a라는 변수를 선언
// let을 통해 "Ha"란 데이터를 가진 b라는 변수를 선언
// const을 통해 "Min"이란 데이터를 가진 c라는 변수가 선언되었음을 알 수 있다.
var a = 1 // var을 이용해 a = 1로 변수를 선언
var a = 2 // a = 2로 변수 재선언
console.log(a)
// 오류없이 a 변수에 할당된 2가 출력된다.
let a = 1
let a = 2
// 이렇게 재선언 할 경우 SyntaxError: Identifier 'a' has already been declared 에러 발생
// const로 변수를 선언해도 마찬가지의 에러가 발생한다.
var의 경우 필요에따라 바로 재선언이 가능하기 때문에 배운 문법들을 연습삼아 활용할 때는 매우 편하게 쓸 수 있다.
다만, 실제 코드에 활용할 때는 실수로 변수를 재선언하게 될 가능성이 있고 이럴 경우 별도의 에러가 발생되는 것도 아니기 때문에 코드가 길어지고 복잡해질 수록 실수를 잡아내기 어렵다.
반면에 let과 const의 경우 변수 재선언이 되지 않기 때문에 해당 선언자를 통해 실수로 변수를 재선언 하더라도 에러메시지를 통해 금방 실수를 바로잡을 수 있다.
var a = 1
a = 2
let b = 1
b = 2
console.log(a,b)
output : 2,2
//위와 같이 var, let을 이용해 a, b의 변수를 선언 후 재선언이 아닌 변수에 값을 재할당을 하였다.
//오류 발생없이 정상적으로 2,2가 출력된다.
let의 경우 이미 선언된 변수를 다시 선언할 순 없지만 선언된 변수의 값을 다른 값으로 재할당 할 수는 있다.
const a = 1
a = 2
// Uncaught TypeError: Assignment to constant variable.
// 에러가 발생되며 재할당이 되지 않는 걸 알 수 있다.
const의 경우 재선언, 재할당이 모두 되지 않는다.