원시 타입 (Primitive type)
* 고정된 저장공간을 차지하는 데이터
stringnumberbooleanundefinednull
* 데이터가 하나의 정보만을 담고 있다.
참조 타입 (Reference type)
* 저장공간이 유동적으로 늘어날 수 있는 데이터
arrayobjectfunction
* 주제는 같지만 서로 다른 여러 개의 정보를 가지고 있다.
* 데이터는 별도로 관리되고, 변수에는 주소가 저장되기 때문에 참조타입이라고 부른다.
→ 가장 핵심적인 차이는 보관함의 크기에서 발생한다.
원시 타입 (Primitive type)
* 원시타입이 할당될 경우, 변수에 데이터 값 자체가 담긴다.
* 변수 간에 원시타입 데이터를 복사할 경우, 데이터 값이 복사되기 때문에 기존 데이터에 영향을 주지 않는다.
* 값 자체에 대한 변경은 불가능하지만, 변수에 다른 데이터를 할당할 수 있다.let a = 'apple'; let b = a; // b에 'apple'이 할당됨 b = 'orange'; // b에 'orange'라는 다른 데이터를 재할당 해줌 → b는 'orange'가 되지만 a는 그대로 'apple'로 남아있다.
참조 타입 (Reference type)
* 참조타입이 할당될 경우, 보관함의 주소가 담긴다.
* 참조타입 데이터는 주소를 복사한다. 복사한 데이터에서 요소를 변경할 경우, 주소 안의 데이터가 변경되는 것이기 때문에 기존의 데이터에도 영향을 준다.let oldArr = [1, 2, 3, 4, 5]; let newArr = oldArr; // newArr에 oldArr의 주소를 할당해줌 newArr[2] = 30; // 복사한 데이터의 요소를 변경할 경우 원본 데이터도 변경됨 → newArr와 oldArr 모두 변경된 데이터 [1, 2, 30, 4, 5]를 가지게 된다.
예전에는 데이터 보관함(메모리)의 용량이 제한적이었기 때문에, 데이터 보관함 하나에 하나의 데이터만 넣을 수 있어서 이를 원시적인 방법이라고 하였다.
제한된 변수에 일정 크기 이상의 값을 할당하지 못하였기 때문에,
데이터의 크기가 동적으로 변하는 (참조)데이터 보관함이 만들어졌다.
참조 자료형에 속해 있는 배열과 객체의 경우, 크기가 고정되어 있지 않고,
데이터를 추가하고 삭제하는 것에 따라서 보관함의 크기가 동적으로 변한다.
👍👍👍