const 는 과연 불변한가?
자바스크립트를 공부하다가 불변이라는 개념이 나와서 자바의 불변객체가 떠올라 친숙해서 정리해보기로 했다.
const 가 불변한지에 대해 알아보기 앞서 자바스크립트의 변수 선언 방식에 대해 가볍게 알아보자.
var, let, const
자바스크립트에서 변수 선언에는 var, let, const 가 있다.
특징은 간단하게 보자면 아래와 같다.
var 는 딱 봐도 변화무쌍해보이고 사용 시 유지보수의 험난함이 예상되는데 역시나 안티패턴이라고 하니 쓰지 않도록 하자.
1. var
- 변수 재선언 가능
- 값 재할당 가능
var a = 1;
var a = 2; // 가능
a = 3; // 가능
console.log(a);
-> 3 출력
2. let
- 변수 재선언 불가능
- 값 재할당 가능
let a = 1;
let a = 2; // 불가능
a = 3; // 가능
console.log(a);
-> 3 출력
3. const
- 변수 재선언 불가능
- 값 재할당 불가능
const a = 1;
const a = 2; // 불가능
a = 3; // 불가능
console.log(a);
-> 1 출력
그렇다면 const 는 불변(immutable) 한가?
답은 아니오다. 물론 문법 자체가 그렇듯 const 에 값 재할당은 불가능하다.
하지만 주목할건 const 의 주소값(= 참조값) 재할당이 불가능한것이지 const 가 Object 라면 아래와 같이
Object 내의 값이나 상태는 얼마든지 변할 수 있다.
const obj = {};
obj['property'] = 1;
console.log(obj);
-> {property: 1} 출력
위에서 보았듯 obj 의 내부값이나 상태는 변경 가능하므로 불변하다고 할 수 없다.
'언어 > JavaScript' 카테고리의 다른 글
[JavaScript] 스코프 체인과 호이스팅 (0) | 2023.12.01 |
---|---|
[JavaScript] 자바스크립트 엔진 개요 (0) | 2023.11.28 |
[JavaScript] async 와 await (0) | 2023.11.04 |
[JavaScript] Promise 객체 등장 배경 (0) | 2023.11.03 |