상권's

원시자료형 vs 참조자료형에 대해서 알아보자. 본문

~2022 작성 글/자바스크립트

원시자료형 vs 참조자료형에 대해서 알아보자.

라마치 2021. 9. 30. 17:42

원시자료형은 string, number, bigint, boolean, undefined, symbol, (null)을 말합니다.

이러한 원시자료형은 변수에 하나의 데이터만 담을 수 있습니다.

 

하지만 개발을 하면서 많은 양을 담아야 할 경우, 변수에 담을 수 있는 양이 정해져 있다면 데이터를 담기 어려워집니다. 그래서 참조자료형이 생겼습니다.

 

참조자료형에는 객체, 배열, 함수 등이 있습니다. 이러한 참조자료형은 변수에 heap에 담겨 있는 주소가 할당됩니다. 이를 통해서 변수를 호출하게 되면 주소에서 데이터를 불러와 많은 양은 데이터도 처리할 수 있습니다. 

 

원시자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조자료형이 할당될 때는 보관함의 주소(reference)가 담깁니다.

 

a = 1, b = a 라고 선언을 할 경우, a라는 변수에는 여전히 1이 할당되어 있고, b라는 변수에는 a의 값인 1이 할당되어 있습니다.  그래서 b = 2로 재선언하더라도 a 변수의 값은 변하지 않습니다.

개발자도구
a = 1
1

b = a

b = 2

b
2
a
1

 

반면 a = [1, 2, 3], b = a, b[2] = 5라는 코드를 입력하게 된다고 가정을 하면, b = a를 통해서 b 변수에 a 변수에 담겨있던 [1, 2, 3]의 주소가 들어가 있어 b도 그 주소를 받게 됩니다. 이 상황에서 b[2] = 5를 통해서 배열의 2번째 값을 바꾸면 배열이 변경됩니다. 그리고 a를 호출하면 b = a를 통해서 동일한 주소가 들어가 있어 해당 주소의 배열이 호출되며 [1, 2, 5]가 호출됩니다.

a = [1, 2, 3]

b = a

b[2] = 5

b
[1, 2, 5]

a
[1, 2, 5]
Comments