[Study] 원시 자료형 vs 참조 자료형

조혜인·2022년 8월 21일
post-thumbnail

📌 원시 자료형(Primitive data type)

  • 원시 자료형이 할당되면 변수에는 값(value) 자체가 담긴다.
  • 객체가 아니면서 method를 가지지 않는 6가지의 타입이 있다.
  • 원시 자료형 변수에는 하나의 데이터만 담을 수 있다.

원시 자료형의 6가지 타입

  • string : 문자열형
  • number : 숫자형
  • bigint : number보다 더 큰 정수를 표현할 수 있는 숫자형
  • boolean : 논리 자료형
  • undefined : 정의되지 않은 값

Example

let a = 10
let b = a
b = 82

console.log(a, b)		//10 82

a에 10을 담아주고 b에 a를 대입하였다. 이 때 a는 원시자료형 number타입이므로 a에 들어있는 값만 b에 복사되어 들어간다. 이후 b의 값을 변형시켜도 a에는 전혀 영향이 가지 않는다.


📌 참조 자료형(Reference data type)

  • 참조 자료형이 할당되면 변수에는 보관함의 주소(reference)가 담긴다.
  • 배열, 객체, 함수가 대표적이다.
  • 하나의 주제는 있지만 서로 다르고, 여러 개의 데이터를 가지고 있다.
  • 동적으로 크기가 변하는 데이터를 담기위해 heap에 저장된다. 데이터가 언제 늘어나고 줄어들지 모르기 때문에 별도의 저장공간을 마련하여 따로 관리한다.

Example

const arr1 = [1, 2, 3, 4, 5]
const arr2 = arr1
arr2.push(6)

console.log(arr1, arr2)		//[ 1, 2, 3, 4, 5, 6 ] [ 1, 2, 3, 4, 5, 6 ]

arr1에 배열을 선언해주고 arr2에 arr1을 대입하였다. 이 때 arr1은 Array타입으로 참조 자료형이므로 값이 아닌 arr1의 주소값이 arr2에 복사되게 된다. 따라서 이후에 arr2에 새로운 6의 값을 추가하였을 때 arr2뿐만 아니라 같은 주소값을 가지고 있는 원본 arr1에도 영향이 가게 된다. 따라서 arr1, arr2 모두 6이 추가된 배열을 가지고 있게 된다.

profile
코딩은 역시 재밌군

0개의 댓글