자바스크립트에서 var, let, const 차이

자바스크립트에서 var, let, const 는 모두 변수를 선언할 때 사용하지만, 범위(scope), 재할당 가능 여부, 호이스팅(hoisting) 동작 등에서 중요한 차이가 있습니다.


var vs let vs const — 핵심 차이

구분varletconst
선언 범위(Scope)함수 스코프(function scope)블록 스코프(block scope)블록 스코프(block scope)
재선언 가능 여부✅ 가능❌ 불가능❌ 불가능
값 재할당✅ 가능✅ 가능불가능
호이스팅✅ 일어나며, 값은 undefined 로 초기화✅ 선언만 호이스팅, 초기화 X → 사용하는 순간 오류✅ 선언만 호이스팅, 초기화 X → 사용하는 순간 오류

✅ 1) var (오래된 방식 – 되도록 사용 안함)

✅ 함수 스코프
❌ 블록 스코프가 아니라 아래처럼 오류 없이 출력됨:


✅ 2) let (일반적 변수 선언)

✅ 블록 스코프
❌ 재선언 불가


✅ 3) const (상수 선언, 변하지 않는 값)

✅ 블록 스코프
✅ 상수라서 재할당 불가
❗ 단, 객체나 배열은 내부 값 변경 가능


✅ 호이스팅 동작 비교

var는 호이스팅되며 undefined로 초기화됨

let은 선언만 올라가고 초기화는 안됨 → 초기화 전 사용하면 오류

const도 동일


✅ 요약: 실무에서 어떻게 쓰나?

var는 사용 지양 (스코프 문제 많음)
✔ 값이 바뀔 수 있으면 let
✔ 절대 바뀌지 않는 값이면 const


✅ 예제