Javascript

변수 선언자 let, var, const 차이

noodle-dev 2025. 12. 9. 22:44

차이점

1. 재할당 (값 변경)

가능: var, let

불가능: const

 

const는 상수를 선언하는 키워드로, 값을 한번 할당하면 변경할 수 없다.

 

2. 재선언 (동일 이름 중복 선언)

가능: var

불가능: let, const

var tester = "Hi";
var tester = "Hello";

이렇게 재선언해도 오류 안 남 -> 기존에 동일 이름의 변수를 선언했던 것을 까먹고 오용할 가능성 있다.

 

3. Scope (범위)

Function Scope: var

Block Scope: let, const

 

var는 함수 내부에 선언된 경우만 지역변수로 인식하며, 그 외는 모두 전역변수로 간주한다.

즉, if, for, while, try, catch 문 등의 코드 블럭 내부에서 var로 선언된 변수는 전역변수로 간주되어, 블럭 외부에서도 참조할 수 있다.

 

if, for, while, try, catch 문 등의 코드 블럭 내부에서 let, const로 선언된 변수는 지역변수로 간주되어, 외부에서 참조할 수 없다.

 

4. 변수 호이스팅

실행: var

미실행: let, const

 

호이스팅(Hoisting)이란, 코드 실행 전 변수 선언을 먼저 하여 뒤에서 선언된 변수도 앞 코드에서 참조할 수 있게 된다.

 

var선언과 동시에 undefined로 초기화된다.

그러므로 아래 코드에서 에러가 발생하지 않는다.

console.log(tester);	// undefined
var tester = "HI";
console.log(tester);	// HI

 

반면 let, const는 코드 실행 전 변수 선언은 되지만 초기화되지 않는다.

즉 아래 코드에서 에러가 발생한다.

console.log(tester);	// ReferenceError: tester is not defined
let tester = "HI";

 

결론

var 보다는 const, let을 사용하자.

값이 변경될 가능성이 없으면 const를 사용하자.