[스터디] TimCookie const 변수로 선언한 객체의 경우, 왜 그 안의 데이터는 자유롭게 수정이 가능한가?

안승지·2024년 4월 14일
0

[스터디] TimCookie

목록 보기
4/5
post-thumbnail

개발 스터디 'TimCookie' 저장소 정리 전 백업_23.07.24

발단

타입 스크립트를 공부 중, readonly와 관련된 개념에 대해서 들어가던 중, 나왔던 화재이다.

const 변수는 상수로서 말이 이상하다, "const 는 상수다." 가 더 정확할 것 같다.
'변하지 않는' 값이다. 그래서 이후에 다른 값을 집어 넣는 것 (재할당)이 불가능 하다.

하지만 const로 '객체'를 선언할 경우, 그 객체 안의 key 와 value 들은 자유롭게 수정이 가능하다.

'const 는 상수로서 변하지 않는 값이다.'라는 명제가 '참'이라면, 위의 객체를 수정 할 수 있다는 상황은 이상하다.

강의 내용에 따르면,
"const 는 등호로 재할당만 막는 역할을 한다."고 한다,

사고 진행

그렇다면 여기부터 추측이다.

값의 할당과 재할당 그리고 수정은 다른 개념인 것인가?
다른 글에서 적고 있는 내용과 관련이 있는 것으로 보이는데, 변수(상수)의 선언은 메모리에의 직접적인 접근이 아닌 값이 들어있는 메모리 주소에 대한 접근으로 알고 있다.

var 와 let 그리고 const 는 메모리와 어떻게 작동하는가?
변수의 선언이라는 공통된 역할 안에서 어떤 차이를 가지는가?

그리고 값의 재할당은 메모리에 어떻게 작용되는가?
새로운 메모리 주소를 연결하는 것인가? 아니면 기존 연결된 주소의 메모리 공간에 새로운 값을 집어넣는 것인가?

마지막으로 값의 수정은 메모리에 어떻게 작용되는가?
새로운 메모리 주소를 연결하는 것인가? 아니면 기존 연결된 주소의 메모리 공간에 있는 값을 수정하는 것인가?

0개의 댓글