TIL 5/23 data/memory

2023. 5. 24. 15:48Dev/TIL WIL

js의 두가지 데이터 타입별 메모리 저장방식을 학습했는데

 

https://devdox.tistory.com/152

 

의문이었던건 두 타입(primitive, reference) 모두 값은 메모리의 데이터 영역에 저장된 주소값이 데이터로 저장된다.

 

값이 변경되어도 기존 데이터가 변경되는 것이 아닌 새로운 주소값으로 갈아끼워지는 것

 

근데 기본형데이터는 불변하고 참조형데이터는 불변하지 않은 이유였다.

 

좀 더 자세히 알아보니

 

불변성의 여부를 나누는 메모리의 영역은 데이터 영역이었다.

 

기본형 데이터타입과 참조형 데이터타입 모두 변수 영역의 데이터는 새로운 주소 값으로 변경되지만

 

기본형 데이터타입의 경우 데이터영역의 값들은 변경되는 게 아닌 새로운 값이 입력된다.

 

기존 데이터 값이 변경되는게 아닌, 새로운 메모리에 새로운 값으로 입력된다. 

 

그렇기 때문에 불변성을 가진다.

 

하지만 참조형 데이터 타입의 경우 기본형과 다르게 데이터 영역이 더 존재한다.

 

기본적인 object의 경우 변수 영역의 메모리에 이름과 주소값들이 저장되고

 

데이터 영역에 해당하는 별도의 메모리 공간에 key 값들과 value 값들이 저장돼 있는 데이터영역의 주소값이 저장된다.

 

수정하는 경우, 기본형 타입과 동일하게 변수영역의 주소값은 변화하지만

 

데이터영역에 해당하는 별도의 메모리공간의 주소값도 바뀐다.

 

그렇기에 가변성을 띈다

 

 

 

'Dev > TIL WIL' 카테고리의 다른 글

TIL 6/5 Fetch, promise  (0) 2023.06.06
TIL 5/24 실행컨텍스트 호이스팅  (0) 2023.05.25
TIL 5/22 JS ES6 / 구조분해할당  (0) 2023.05.23
5월 3주차 WIL  (0) 2023.05.21
5/19 첫번째 팀 프로젝트 회고  (0) 2023.05.19