
이번 주에는 자바스크립트에서 변수를 선언할 때 항상 등장하는 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: 불변 변수 선언, 유지보수에 가장 유리
'🖥️개발 > 🐥JavaScript' 카테고리의 다른 글
[JavaScript] 이벤트 루프, 마이크로태스크 큐 (2) | 2025.07.06 |
---|---|
[JavaScript] 얕은 복사 / 깊은 복사 / 구조 분해 복사 정리하기 (1) | 2025.06.29 |
[JavaScript] 화살표 함수(Arrow Function) (3) | 2025.06.08 |
[JavaScript] Global This (0) | 2025.05.03 |
[JavaScript] 로컬 스토리지와 세션 스토리지 (localStorage & sessionStorage) (0) | 2025.04.07 |