var 문제 확인
var는 함수 전체로 끌어올려지고 같은 스코프에서 재선언이 허용되어 의도하지 않은 덮어쓰기를 숨깁니다.
함수 스코프var의 함수 스코프와 호이스팅이 만든 혼선을 블록 스코프, TDZ, 바인딩 불변성으로 나누어 정리합니다. const는 값 전체를 얼리는 키워드가 아니라 이름이 다른 값을 다시 가리키지 못하게 만드는 계약입니다.
var는 함수 전체로 끌어올려지고 같은 스코프에서 재선언이 허용되어 의도하지 않은 덮어쓰기를 숨깁니다.
함수 스코프let과 const는 if, for, block 안에서만 유효하므로 임시 변수와 반복 변수의 생존 범위가 코드 구조와 일치합니다.
블록 스코프선언 전 접근은 초기화 전 사용으로 보아 오류가 나며, 호이스팅은 존재하지만 안전하게 관찰됩니다.
Temporal Dead Zone재할당 금지는 API 경계와 참조 안정성을 드러내고, 객체 불변이 필요하면 Object.freeze나 불변 업데이트를 따로 적용합니다.
바인딩 불변for (let i = 0; i < buttons.length; i += 1) {
buttons[i].addEventListener('click', () => selectTab(i));
overflow-wrap: break-word;
word-break: keep-all;
}
// var였다면 모든 콜백이 같은 i 바인딩을 공유할 수 있다.