가장 큰 차이점은 재할당, 재선언의 여부
var는 재할당 가능, 재선언 가능
let은 재할당 가능, 재선언 불가능한 변수
const는 재할당 불가, 재선언 불가능한 변수
let과 const의 차이점은
const로 선언한 변수는 데이터를 변경할 수 없다는 것이다.
여기서 변경할 수 없는 데이터를 상수라고 부른다.
호이스팅이란 변수, 함수가 선언되기 전에 변수명, 함수명을 알고 있는 것을 의미한다.
세 변수 모두 호이스팅은 되지만, let과 const는 선언전까지 변수에 접근이 불가능
var는
function-scoped
let과 const는block scoped
c = "test" // ReferenceError : c is not defined
let c
이런 에러가 발생하는 이유는
let은 값을 할당하기 전에 변수가 선언 되어있어야 하는데 그렇지 않기 때문이다.(temporla dead zone)
const는 좀더 엄격하다
// let은 선언하고 나중에 값을 할당이 가능하지만
let dd
dd = 'test'
// const 선언과 동시에 값을 할당 해야한다.
const aa // Missing initializer in const declaration
참조
https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d
https://www.youtube.com/watch?v=61iolhWgQt0