더북(TheBook)

2.6.2 const가 참조하는 객체는 여전히 변경 가능

상수로 변경할 수 없는 것이 무엇인지 기억하는 것이 중요하다. 상수의 값이다. 그 값이 객체 참조라면 어떤 식으로든 객체가 변경 불가능하다는 것(상태를 변경할 수 없음)을 의미하지는 않는다. 객체는 여전히 변경 가능하다. 이는 상숫값을 변경하기 때문에 다른 객체에 대한 상수 지점을 만들 수 없음을 의미한다. 확인해 보자.

const obj = {
    value: "before"
};
console.log(obj.value); // "before"

위 코드에 상수에 객체에 대한 참조가 있다. 메모리에는 그림 2-1과 같이 존재한다.

▲ 그림 2-1

obj 상수는 객체를 직접 포함하지 않고 객체에 대한 참조를 포함한다(그림 2-1에서 “Ref55462”로 표시됨). 물론 이것은 개념적일 뿐이며 객체 참조의 실제 값을 볼 수 없다. 따라서 객체의 상태를 다음과 변경할 때

obj.value = "after";
console.log(obj.value); // "after"
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.