[JavaScript] const, let, var의 차이점
by 구설구설JavaScript에서 변수를 선언할 때 사용하는 키워드는 const, let, var 세 가지가 있다.
각각의 키워드는 서로 다른 특성과 사용 용도를 가지고 있다.
#1 const
const는 상수(Constant)를 선언할 때 사용한다.
const로 상수를 선언할 때에는 항상 초기값이 필요하다.
const로 선언된 변수는 재할당이 불가능하다.
다만, 객체나 배열과 같은 참조형 데이터는 내부 값의 변경이 가능하다.
const z = 30;
z = 40; // TypeError: Assignment to constant variable.
const obj = { a: 1 };
obj.a = 2; // 가능
console.log(obj.a); // 2
위 코드에서 z 변수는 재할당이 불가능하나,
객체 obj의 프로퍼티 값은 변경할 수 있다.
#2 let
let은 변수를 선언할 때 사용한다.
let은 블록 스코프(block scope)를 가지며,
재할당은 가능하지만 재선언이 불가능하다.
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
위 코드에서 y 변수는 if 블록 내부에서만 유효하며, 블록 외부에서는 접근할 수 없다.
이는 변수의 유효 범위를 제한해 의도치 않은 변수 오염을 방지한다.
#3 var
var는 변수를 선언할 때 사용한다.
var은 함수 스코프를 가지며, 선언이 가능하다.
또한, var로 선언된 변수는 호이스팅(hoisting, 변수가 끌어올려 지는 현상)이 발생해 선언과 초기화가 변수 선언문 이전에 이루어진다.
console.log(x); // undefined
var x = 10;
console.log(x); // 10
위 코드에서 x 변수는 선언되기 전에 undefined로 초기화되며(호이스팅),
이후 10으로 값이 할당된다.
정리하면
- var는 함수 스코프를 가지며, 재선언과 호이스팅이 가능하다.
- let은 블록 스코프를 가지며, 재선언이 불가능하고 호이스팅은 발생하지만 초기화가 이루어지지 않는다.
- const는 블록 스코프를 가지며, 재할당이 불가능하다. 그러나 참조형 데이터의 경우 내부 값은 변경할 수 있다.
재선언 | 재할당 | |
const | X | X |
let | X | O |
var | O | O |
그냥 재할당을 해야 할 때는 let, 재할당 하지 않을 것 같으면 const를 쓰자.
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] '=='와 '==='의 차이점 알아보기 (0) | 2024.05.21 |
---|
블로그의 정보
공부중임
구설구설