JavaScript

var let const

lshjju 2026. 2. 14. 16:55

데이터를 담는 세 가지 방법인 var, let, const의 차이점과 특징에 대해 심도 있게 알아보겠습니다.

자바스크립트의 발전 과정에 따라 변수를 선언하는 방식이 변해왔으며, 각 방식은 고유한 성격을 가지고 있습니다.


1. var (전통적인 변수 선언 방식)

ES6(2015년) 이전에 사용되던 유일한 변수 선언 방식입니다. 유연하지만 코드의 규모가 커지면 예측하기 어려운 오류를 발생시킬 위험이 큽니다.

  • 함수 레벨 스코프: 오직 함수 내부에서 선언되었을 때만 지역 변수로 인정됩니다. if나 for문 안에서 선언해도 밖에서 접근이 가능합니다.
  • 재선언 가능: 같은 이름의 변수를 여러 번 선언해도 에러가 나지 않아 실수로 값을 덮어쓸 수 있습니다.
  • 호이스팅: 변수 선언 전에도 호출이 가능하며 undefined를 반환합니다.
JavaScript
 
var name = "철수";
var name = "영희"; // 재선언 가능 (위험)

if (true) {
    var age = 20;
}
console.log(age); // 20 출력 (블록 밖에서도 접근 가능)

2. let (재할당이 가능한 현대적 변수)

var의 단점을 보완하기 위해 도입된 현대적인 변수 선언 방식입니다.

  • 블록 레벨 스코프: 중괄호 { }로 둘러싸인 모든 코드 블록 안에서만 유효합니다.
  • 재할당 가능: 저장된 값을 나중에 바꿀 수 있습니다.
  • 재선언 불가능: 같은 스코프 내에서 동일한 이름을 다시 사용할 수 없어 안전합니다.
JavaScript
 
let score = 100;
score = 90; // 재할당 가능

// let score = 80; // 에러! 같은 이름으로 재선언 불가

if (true) {
    let localScore = 50;
}
// console.log(localScore); // 에러! 블록 밖에서 접근 불가

3. const (값이 변하지 않는 상수)

한 번 할당하면 값을 절대 바꿀 수 없는 **상수(Constant)**를 선언할 때 사용합니다.

  • 재할당 불가능: 처음 값을 정하면 나중에 수정할 수 없습니다. (단, 객체나 배열의 내부 요소는 수정 가능합니다.)
  • 반드시 초기화 필요: 선언과 동시에 값을 넣어야 합니다.
  • 블록 레벨 스코프: let과 마찬가지로 { } 안에서만 생존합니다.
JavaScript
 
const PI = 3.14;
// PI = 3.15; // 에러! 상수값은 재할당 불가

const student = { name: "민수" };
student.name = "지수"; // 객체 내부의 값은 바꿀 수 있음 (메모리 주소는 그대로이기 때문)

📋 var, let, const 비교표

특징 var let const
유효 범위(Scope) 함수 레벨 스코프 블록 레벨 스코프 블록 레벨 스코프
재할당 가능 가능 불가능
재선언 가능 불가능 불가능
호이스팅 현상 발생 (undefined) 발생 (에러 유도) 발생 (에러 유도)
사용 권장도 지양함 필요할 때만 사용 기본으로 사용 권장

학습 정리

  • 프로그램의 안전성을 위해 기본적으로 const를 사용하는 습관을 들이세요.
  • 값을 나중에 변경해야 하는 경우(예: 반복문의 카운터)에만 **let**을 사용합니다.
  • **var**는 현대 자바스크립트 프로그래밍에서는 더 이상 권장되지 않습니다.

이제 상황에 맞는 적절한 변수 선언 방식을 선택할 수 있게 되었습니다!


'JavaScript' 카테고리의 다른 글

Function Expression  (0) 2026.02.14
Function  (0) 2026.02.14
Variables scope and hoisting  (0) 2026.02.14
Object  (0) 2026.02.14
Built in object  (0) 2026.02.14