🖥️개발/🐥JavaScript
[JavaScript] let, var, const
주_Y
2025. 6. 22. 23:59

이번 주에는 자바스크립트에서 변수를 선언할 때 항상 등장하는 var, let, const 의 차이점과 선택 기준에 대해 정리해볼게요!
✅ 1. var
자바스크립트 초창기부터 사용되던 변수 선언 방식입니다. 하지만 몇 가지 독특한 특징 때문에 현재는 잘 사용하지 않습니다.
- 함수 스코프: var로 선언된 변수는 블록({})이 아닌, 함수 단위로 스코프가 결정됩니다.
- 호이스팅: 선언 이전에 변수에 접근해도 오류가 나지 않고 undefined가 반환됩니다.
- 중복 선언 허용: 같은 스코프 내에서 같은 이름으로 여러 번 선언이 가능합니다.
이런 특징들은 예기치 않은 버그를 발생시키기 쉬워서, 이후 새로운 선언 키워드가 등장하게 됩니다.
✅ 2. let
ES6에서 도입된 키워드로, var의 단점을 보완했습니다.
- 블록 스코프: let은 변수를 선언한 블록 내에서만 유효합니다.
- 호이스팅은 되지만 초기화 전 접근 불가: 선언 전에 접근하면 오류가 발생합니다 (TDZ, Temporal Dead Zone).
- 중복 선언 불가: 같은 스코프 내에서 중복 선언을 막아줍니다.
일반적인 변수 선언에는 let을 사용하는 것이 기본으로 자리잡았습니다.
✅ 3. const
let과 거의 동일한 특징을 가지지만, 추가로 "값 재할당 불가"라는 특성이 있습니다.
- 재할당 불가: 한 번 할당한 이후 다른 값으로 변경할 수 없습니다.
- 하지만 객체의 내부 값 변경은 가능: 객체나 배열을 const로 선언하더라도 내부 속성이나 요소는 수정 가능합니다.
불변성을 유지하고 싶은 값에 const를 사용하면 의도를 명확히 드러낼 수 있습니다.
✅ 그럼 어떤 걸 쓰는 게 좋을까?
- 변하지 않는 값은 const 사용 (가능한 최대한 const 사용 권장)
- 값이 변경될 수 있다면 let 사용
- var는 특별한 이유가 없는 한 사용하지 않는 것이 좋습니다
✅ 간단 정리
- var: 이제는 거의 사용하지 않음 (과거 레거시 코드 제외)
- let: 변경 가능한 값, 블록 스코프 적용
- const: 불변 변수 선언, 유지보수에 가장 유리
