JavaScript 데이터가 저장되는 과정

SaMag·2022년 9월 6일
0

자바스크립트의 불변성에 대해 알아보던중 알게된 자바스크립트의 데이터가 저장되는 과정입니다.

let a = 10;
let b = 13;

위와 같이 a와 b라는 변수를 생성하게 되면 변수 영역에서 a라는 데이터 영역을 생성하고 데이터 영역의 메모리에서 10이라는 값이 있는지 확인을 하게 됩니다.
데이터 영역에 10이라는 값이 존재하지 않는다면 임의의 데이터 영역에 10을 할당하고 이 주소를 a에 값을 할당하게 됩니다.

위와 같이 10이라는 값을 101번 주소에 할당하고 a라는 이름을 가진 1번 주소는 101번 주소를 참조함으로써 값을 가지게 됩니다.

그렇다면 여기서 a의 값에 10을 더한다면 어떻게 될까?라는 의문을 가졌습니다.
결론은 101번 주소에 저장된 10에 10을 더해 20이 되는것이 아니라 데이터 영역에서 20이라는 값을 가진 주소를 찾고 해당하는 값이 존재하지 않을경우 임의의 주소에 20이라는 값을 할당한 후 이 주소를 a에 저장합니다.

이때, 10이라는 데이터를 참조하는 다른 데이터가 존재하지 않게 됩니다. 이러한 데이터를 정리해주기 위해 존재하는 것이 가비지 컬렉션입니다.
(메모리가 부족하거나 정해진 임의의 타이밍에 동작합니다.)

이러한 기본형 데이터뿐만 아니라 참조형 데이터도 이와 비슷하게 동작합니다.

let object = {
  name: 'bob',
  age: 23
}

우선 변수영역에서 object라는 변수명의 영역을 확보하고 해당 변수가 사용하기 위한 변수 영역을 확보합니다. 이후 필요한 데이터가 데이터 영역에 있는지 확인한 후 데이터가 존재하면 해당 주소를 존재하지 않는다면 임의의 영역에 데이터를 할당하고 주소를 반환합니다.

이러한 개념이 불변 객체를 이해하는데 도움이 됩니다.

profile
개발자

0개의 댓글