내가 보려 만드는 정리노트/JS

var, let, const의 차이점

와일드반 2025. 2. 10. 09:46
  • 자바스크립트에서 변수나 함수를 선언하려면 선언자를 사용해야 한다.
  • var, let, const의 차이는 무엇일까?

한마디로 표현하자면

키워드 범위(Scope) 재선언 재할당 호이스팅
var 함수 스코프 ✅ 가능 ✅ 가능 undefined로 초기화
let 블록 스코프 ❌ 불가능 ✅ 가능 TDZ로 초기화 전 접근 불가
const 블록 스코프 ❌ 불가능 ❌ 불가능 TDZ로 초기화 전 접근 불가

-  차이점

  1. 스코프(scope)
    • var → 함수 스코프 (함수 내에서만 유효)
    • let, const → 블록 스코프 (중괄호 {} 내에서만 유효)
  2. 재할당 및 재선언
    • var → 재선언 O, 재할당 O
    • let → 재선언 X, 재할당 O
    • const → 재선언 X, 재할당 X
  3. 호이스팅(hoisting)
    • var → 선언이 끌어올려지며 undefined로 초기화.
    • let, const → 선언만 끌어올려지고 초기화는 안 됨. (초기화 전 접근 시 오류)

-  사용 권장 순서

  1. 기본적으로 const 사용.
  2. 값이 변경될 경우 let 사용.
  3. var는 사용 지양 (예상치 못한 오류 발생 가능).

-  결론

  • var → 함수 스코프, 중복 선언 가능, 호이스팅 시 undefined로 초기화. (사용 지양)
  • let → 블록 스코프, 중복 선언 불가, 재할당 가능, 호이스팅 시 TDZ 발생.
  • const → 블록 스코프, 중복 선언 및 재할당 불가, 값 변경 불가능. (객체 속성은 변경 가능)