var, let 의 차이점

박성현·2025년 5월 28일

개발중 학습

목록 보기
4/43

var과 let의 차이

구분varlet (ES6 이후 도입)
스코프(Scope)함수 스코프블록 스코프 ({} 안에 제한)
변수 호이스팅호이스팅됨 (초기화는 안됨)호이스팅은 되지만 TDZ 발생
중복 선언 허용✅ 허용❌ 같은 스코프 내에서 불가
전역 객체(window)에 등록✅ 등록됨❌ 등록 안됨

1. 스코프 차이

function testVar() {
  if (true) {
    var x = 1;
  }
  console.log(x); // 1 (함수 스코프라 접근됨)
}

function testLet() {
  if (true) {
    let y = 2;
  }
  console.log(y); // ❌ ReferenceError (블록 스코프)
}

2. 호이스팅(끌어올림) 차이

console.log(a); // undefined
var a = 10;

console.log(b); // ❌ ReferenceError
let b = 10;

3. 중복 선언

var a = 1;
var b = 2;

if (a === 1) {
  var a = 11; // 전역 변수
  let b = 22; // if 블록 변수

  console.log(a); // 11
  console.log(b); // 22
}

console.log(a); // 11
console.log(b); // 2
 /////
var x = 1;
var x = 2; // 가능

let y = 1;
let y = 2; // ❌ SyntaxError

✨ const와 let의 차이도 알아보자 !

구분letconst
재할당 가능 여부가능 (변수 값 변경 가능)불가능 (한 번 할당하면 값 변경 불가)
초기화선언 후 나중에 값 할당 가능선언과 동시에 초기화 필수
스코프블록 스코프블록 스코프

예시)

let a = 10;
a = 20;  // 가능

const b = 10;
b = 20;  // ❌ 오류: Assignment to constant variable.

✅ 정리: 언제 어떤 걸 써야 하나?

  • let을 쓰세요. var는 옛날 방식이며, 스코프 오류를 유발할 수 있어서 지양하는 것이 좋습니다.

  • 변하지 않는 값은 const를 사용하세요.

👉 최신 JavaScript 코딩 스타일에서는 var는 거의 사용하지 않고 let/const를 씁니다.

profile
개발기록장

0개의 댓글