var num = 123
console.log(num) // 123
var num = 456
console.log(num) // 456
var를 사용할 경우, 기존의 선언해둔 변수의 존재를 잊고 값을 재할당하는 실수가 발생할 가능성이 크고 특히, 코드량이 많아졌을 때, 같은 이름의 변수명이 여러번 선언되었다면 어디서 문제가 발생했는지 파악하기 힘들고 의도치 않게 값이 바뀔 우려가 있다.
let season = 'spring'
season = 'summer'
console.log(season) // summer
let seson = 'winter'
// Uncaught SyntaxError: Identifier 'name' has already been declared
처음에 변수 season에 spring을 할당했지만, 다시 summer를 재할당 했기 때문에 console.log에서 summer가 출력되었다.
하지만 다시 let season = 'winter'와 같이 중복선언을 하면 에러 메시지가 출력된다.
const fruit = 'apple'
const fruit = 'banana'
// Uncaught SyntaxError: Identifier 'name' has already been declared
fruit = 'grape'
// Uncaught TypeError: Assignment to constant variable
위 코드처럼 const는 중복 선언 및 재할당을 하면 에러 메시지가 출력된다.
하지만 배열과 객체의 값을 변경하는 것은 가능하다.
const arr = [1, 2, 3]
list = 4
// TypeError: Assignment to constant variable
list.push(4)
console.log(list) // [1, 2, 3, 4]