var, let, const의 차이를 알아보자
JavaScript에서 변수를 선언할 수 있는 방법은 var
, let
, const
세 가지가 있다. 각각의 키워드는 스코프(Scope), 재할당 여부, 호이스팅(Hoisting) 등에서 차이를 보인다. 이 글에서는 각 키워드의 특징과 실제 예제를 통해 언제 어떤 키워드를 사용하는 것이 좋은지 정리해본다.
1️⃣ var
- ES5까지 사용되던 방식
- 함수 스코프(function scope)를 가짐
- 중복 선언 가능
- 재할당 가능
var a = 10;
var a = 20; // 가능
console.log(a); // 20
var
는 현재는 되도록 사용하지 않는 것이 좋다. 이유는 스코프가 함수 단위로 제한되어 있어 의도치 않은 변수 오염이나 중복 선언으로 인해 예기치 못한 버그가 발생할 수 있기 때문.
2️⃣ let
- ES6에서 도입
- 블록 스코프(block scope)를 가짐
- 중복 선언 불가
- 재할당 가능
let b = 10;
b = 20; // 가능
console.log(b); // 20
let b = 30; // ❌ 에러 발생
let
은 가장 일반적으로 사용되는 변수 선언 방식이다. 조건문, 반복문 등 블록 단위의 스코프가 명확해 코드의 안정성과 예측 가능성이 높다.
3️⃣ const
- ES6에서 도입
- 블록 스코프(block scope)를 가짐
- 중복 선언 불가
- 재할당 불가
const c = 10;
c = 20; // ❌ 에러 발생
단, const
는 객체(object)나 배열(array) 선언 시에는 내부 값은 변경할 수 있다.
const obj = { name: 'Orangee' };
obj.name = 'Blue'; // 가능
✅ 어떤 걸 써야 할까?
- 기본적으로는
const
를 먼저 사용하고, 재할당이 필요할 경우에만let
을 사용 var
는 지양하는 것이 좋음 (레거시 코드 제외)
📌 요약표
키워드 | 스코프 | 중복 선언 | 재할당 | 사용 권장 |
---|---|---|---|---|
var | 함수 스코프 | 가능 | 가능 | ❌ 지양 |
let | 블록 스코프 | 불가 | 가능 | ✅ 일반 변수 |
const | 블록 스코프 | 불가 | 불가 | ✅ 상수 |