let과 const의 차이는 알고있었다. let과 var의 공통점으로는 여러번 할당이 가능한것으로 알고있었다. 그렇다면 차이는 무엇일까?? 🤓
한문장으로 표현하면 var는 재선언 가능 / let은 재선언 불가능 하다.
더 깊숙하게 알아보자면, let 로 선언된 변수를 선언문 이전에 참조하면 참조 에러(ReferenceError)가 발생한다.
자바스크립트는 ES6에서 모든 선언(var, let, const, function, class)을 호이스팅한다.
스코프에 변수를 등록(선언단계)하지만 초기화 단계는 변수 선언문에 도달했을 때 이루어진다. 초기화 이전에 변수에 접근하려고 하니 참조 에러(ReferenceError)가 발생한하는 것이다. let 로 선언된 변수는 스코프의 시작에서 변수의 선언까지 일시적 사각지대(Temporal Dead Zone; TDZ)에 빠지기 때문이다.
**참조문헌 poiemaweb