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 블록 스코프 불가 불가 ✅ 상수