얼마나 이해했나요? - Primitive & Reference

future·2020년 12월 15일
1
  • 원시 자료형과 참조 자료형의 구분이 왜 필요한지에 대해서 이해할 수 있다.
  • 원시 자료형과 참조 자료형의 차이를 이해하고, 각자 맞는 상황에서 사용할 수 있다.

원시 타입 (Primitive type)

* 고정된 저장공간을 차지하는 데이터 string number boolean undefined null
* 데이터가 하나의 정보만을 담고 있다.


참조 타입 (Reference type)

* 저장공간이 유동적으로 늘어날 수 있는 데이터 array object function
* 주제는 같지만 서로 다른 여러 개의 정보를 가지고 있다.
* 데이터는 별도로 관리되고, 변수에는 주소가 저장되기 때문에 참조타입이라고 부른다.


→ 가장 핵심적인 차이는 보관함의 크기에서 발생한다.

  • 원시 자료형을 할당할 때와, 참조 자료형을 할당할 때의 차이에 대해 이해할 수 있다.

원시 타입 (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]를 가지게 된다.
  • 왜 원시 자료형이라고 부르는지 이해할 수 있다.

예전에는 데이터 보관함(메모리)의 용량이 제한적이었기 때문에, 데이터 보관함 하나에 하나의 데이터만 넣을 수 있어서 이를 원시적인 방법이라고 하였다.

  • 원시 자료형의 값의 크기는 다르지만, 변수의 크기는 같다는 개념을 이해할 수 있다.
  • 왜 참조 자료형이 생겨났는지 이해할 수 있다.

제한된 변수에 일정 크기 이상의 값을 할당하지 못하였기 때문에,
데이터의 크기가 동적으로 변하는 (참조)데이터 보관함이 만들어졌다.

  • 원시 자료형이 할당 된 변수의 크기는 같지만, 참조 자료형이 담긴 변수의 크기(보관함의 크기)는 동적으로 변한다는 개념을 이해할 수 있다.

참조 자료형에 속해 있는 배열과 객체의 경우, 크기가 고정되어 있지 않고,
데이터를 추가하고 삭제하는 것에 따라서 보관함의 크기가 동적으로 변한다.

profile
get, set, go!

1개의 댓글

comment-user-thumbnail
2020년 12월 15일

👍👍👍

답글 달기