원시 자료형과 참조 자료형은 무엇인가!
원시 자료형(primitive type)과 참조 자료형(reference type)의 구분이 왜 필요한지?
원시 자료형과 참조 자료형의 차이를 이해하고, 각자 맞는 상황에서 사용할 수 있다.
원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다는 개념을 코드로 설명할 수 있다.
참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용한다는 것을 이해할 수 있다.
자바스크립트에서 원시 타입의 데이터(primitive data types; 원시 자료형)는 객체가 아니면서 method를 가지지 않는 6가지의 타입
string, number, bigint, boolean, undefined, symbol, (null)
원시 자료형의 보관함인 변수에는 하나의 데이터만 담을 수 있습니다.
원시 자료형이 담기는 보관함의 크기는 고정하는 것이 합당합니다. 어느정도 일정한 크기의 데이터가 온다고 예상할 수 있기 때문입니다.
원시 자료형의 경우, 변수에 넣을 수 있는 데이터 크기가 제한되기 때문.
따라서 참조 자료형의 경우 변수에 값이 아닌 주소를 저장함으로써 이를 해결한다.
변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고, 이 주소를 따라가보면 특별한 데이터 보관함(=heap)을 찾을 수 있는데, 이 특별한 데이터 보관함에서는 자기 마음대로 사이즈를 늘렸다가 줄였다가 합니다. ("동적(dynamic)으로 변한다"라고 하기도 합니다.)
원시 타입 데이터는 각 변수간에 데이터를 복사할 경우, 데이터 값이 복사되기 때문에 기존의 데이터에 영향이 가지 않는다
let a = 1;
b=a; //데이터를 복사할 경우
b=2;
a; //1, 기존의 데이터에 영향이 가지 않는다
참조 타입 데이터는 주소를 복사한다.
그렇기 때문에 복사한 데이터에서 원소를 변경하면, 주소안에 있는 데이터가 변경되는 것이기 때문에 기존의 데이터에도 영향이 간다.
let e = [10, 20];
let f = e;
f[0] = 50;
e; //[50, 20]