let과 const 스코프
var의 함수 스코프와 호이스팅 혼선을 블록 스코프, TDZ, 바인딩 불변성으로 나누어 정리한다.
| 개념 | let/const | var와 차이 | 확인 질문 |
|---|---|---|---|
| Scope | 블록 단위로 살아 있음 | 함수 단위로 살아 있음 | 변수가 필요한 가장 작은 범위인가 |
| Hoisting | 선언은 올려지지만 TDZ 접근 금지 | undefined로 접근 가능 | 선언 전 읽기가 있는가 |
| Reassign | let은 가능, const는 불가 | var는 가능 | 정말 값이 바뀌어야 하는가 |
| Object const | 바인딩만 고정 | 객체 속성 변경 가능 | 불변 데이터와 혼동하지 않는가 |
| Loop | 반복마다 블록 스코프 생성 | var는 같은 binding 공유 | 비동기 콜백에서 값이 꼬이지 않는가 |
const는 값을 얼리는 키워드가 아니라 이름이 다른 값을 다시 가리키지 못하게 하는 계약이다.