let·const와 블록 스코프의 예측 가능성
let과 const는 var를 대체하는 취향 문제가 아니라 변수가 살아 있는 범위를 블록으로 제한해 값 추적을 단순하게 만든다.
| 문제 | var에서 생기는 혼선 | let/const의 대응 | 좋은 기준 |
|---|---|---|---|
| Function scope | 블록 밖에서도 값이 남음 | 블록 밖 접근 차단 | 필요한 위치에 선언 |
| Hoisting | 선언 전 undefined 읽힘 | TDZ로 접근 오류 | 초기화 전 사용 금지 |
| Loop closure | 반복 콜백이 같은 변수 공유 | 반복마다 새 binding | 비동기 반복 값 확인 |
| Reassignment | 의도 없는 값 변경 | const로 재할당 방지 | 변경 가능한 값만 let |
| Readability | 값 수명이 길어짐 | 수명이 짧아짐 | 선언과 사용 위치가 가까운가 |
블록 스코프는 코드를 짧게 만드는 문법이 아니라 값이 어디까지 살아 있는지 독자가 예측하게 하는 장치다.