📘 공통점:
- 모두 변수를 선언하는 키워드
- 값을 담기 위한 컨테이너 역할
🔍 차이점 비교 표:
| 구분 |
var |
let |
const |
| 스코프(scope) |
함수 스코프 |
블록 스코프 |
블록 스코프 |
| 중복 선언 |
가능 |
불가능 |
불가능 |
| 재할당 |
가능 |
가능 |
❌ 불가능 |
| 호이스팅(hoisting) |
O (초기값 undefined) |
O (초기화 전 접근 불가 - TDZ) |
O (초기화 전 접근 불가 - TDZ) |
| 추천 여부 |
❌ 비추천 (혼란 유발) |
✅ |
✅ |
🎯 한 줄 정리:
var: 과거 방식, 함수 스코프, 버그 유발 가능성 높음
let: 가장 일반적인 변수 선언
const: 절대 바뀌지 않을 값을 선언할 때 사용 (예: 설정값, 상수 등)
모범 답안
var
- 중복 선언 허용:
var로 선언된 변수는 같은 스코프 내에서 중복 선언이 가능합니다. 이는 코드의 유지보수를 어렵게 하고 예상치 못한 버그를 발생시킬 수 있습니다.
- Scope:
var는 함수 레벨 스코프를 가집니다. 함수 내부에서 선언된 var 변수는 해당 함수 전체에서 접근할 수 있으며, 함수 외부에서 선언되면 전역 변수로 간주됩니다.
- Hoisting:
var 선언은 호이스팅 되어 스코프의 최상단으로 끌어올려집니다. 그러나 초기화는 실제 코드 위치에서 수행되므로, 선언 전에 변수를 사용하면 undefined 값을 반환합니다.
let