내가 보려 만드는 정리노트/JS
var, let, const의 차이점
와일드반
2025. 2. 10. 09:46
- 자바스크립트에서 변수나 함수를 선언하려면 선언자를 사용해야 한다.
- var, let, const의 차이는 무엇일까?
한마디로 표현하자면
키워드 | 범위(Scope) | 재선언 | 재할당 | 호이스팅 |
---|---|---|---|---|
var |
함수 스코프 | ✅ 가능 | ✅ 가능 | undefined 로 초기화 |
let |
블록 스코프 | ❌ 불가능 | ✅ 가능 | TDZ로 초기화 전 접근 불가 |
const |
블록 스코프 | ❌ 불가능 | ❌ 불가능 | TDZ로 초기화 전 접근 불가 |
- 차이점
- 스코프(scope)
- var → 함수 스코프 (함수 내에서만 유효)
- let, const → 블록 스코프 (중괄호 {} 내에서만 유효)
- 재할당 및 재선언
- var → 재선언 O, 재할당 O
- let → 재선언 X, 재할당 O
- const → 재선언 X, 재할당 X
- 호이스팅(hoisting)
- var → 선언이 끌어올려지며 undefined로 초기화.
- let, const → 선언만 끌어올려지고 초기화는 안 됨. (초기화 전 접근 시 오류)
- 사용 권장 순서
- 기본적으로 const 사용.
- 값이 변경될 경우 let 사용.
- var는 사용 지양 (예상치 못한 오류 발생 가능).
- 결론
- var → 함수 스코프, 중복 선언 가능, 호이스팅 시 undefined로 초기화. (사용 지양)
- let → 블록 스코프, 중복 선언 불가, 재할당 가능, 호이스팅 시 TDZ 발생.
- const → 블록 스코프, 중복 선언 및 재할당 불가, 값 변경 불가능. (객체 속성은 변경 가능)