let과 const는 es6부터 생겨났다. 이전까지는 var로만 사용되었다는건데, var에는 몇가지 문제가 있었다.
스코프란 변수가 사용 될 수 있는 영역을 말하는데, var은 함수스코프이기 때문에 벗어난 영역에서 사용하면 에러가 발생한다.
그러나, for문, while문, switch문 if문 등 함수 내부에서 작성되는 코드의 경우 반복문이 끝나도 var는 계속 남게 된다.
호이스팅은 변수가 속한 스코프의 최 상단으로 끌어올리는 것인데,
아래에서 선언된 변수가 더 위의 코드에서 사용되었을때 오류가 나지 않고 undefined가 나는 문제이다.
에러가 없다는건 직관적이지 않으며, 있을 필요가 없는 기능이다.
이 문제들을 해결하기 위해
ES6에서 const와 let이 등장했다.