위 그림과 같이 자바스크립트의 데이터 타입에는 두 가지 종류가 있습니다. 기본형과 참조형입니다.
데이터 타입에 대해 자세히 알아보겠습니다.
기본형은 값을 그대로 할당합니다.
기본형의 특징을 알아보겠습니다.
정리하자면, 기본형 데이터는 값을 그대로 할당하고, 메모리상에 고정된 크기로 저장되며 원시 데이터 값 자체를 보관하므로, 불변적입니다.
각각의 변수는 영역을 가지고 있고, 변수는 직접적으로 비교할 수 있습니다.
보통 같은 데이터는 하나의 메모리를 사용합니다. (재사용이 가능합니다)
값이 저장된 주소값을 할당 (참조)
참조형의 특징을 알아보겠습니다.
한번 obj2.a의 값을 바꿔보면
obj2와 매칭된 414번 주소로 이동한 후 1011번 주소로 이동합니다.
1011번 안에 a 프로퍼티의 주소인 1012로 이동합니다.
1 대신 10을 대입한 후 마칩니다.
이 후 obj.a 와 obj2.a의 값을 출력하면 obj2.a의 값을 바꿨지만 obj.a의 값도 바뀌는 것을 알 수 있습니다.
위 상황을 보면 1185번 주소 데이터를 보면 배열 형태로 구성되어 있습니다.
이때 obj3.a = "new"를 할당하면 어떻게 될까요?
1185 주소의 데이터를 new로 변경을 하고 기존에 있던 1326 ~ 1328를 참고하고 있던 링크가 사라지게 됩니다.
정리하자면, 비어있는 데이터 공간을 확보하고, 객체 속 프로퍼티에 대한 공간을 다시 확보합니다. 객체의 프로퍼티 명과 주소를 매칭하고 확보했던 두번째 주소에 데이터를 할당합니다.
전체적으로 비교하자면 변수를 선언하면 데이터가 담길 공간을 확보하고, 확보된 데이터의 주소값을 가지고 변수면과 매칭시키는 선언과정까지 동일하나, 할당과정에 차이를 갖습니다.
참고자료