원시 자료형 vs 참조 자료형

Jiwon Yoo·2023년 3월 2일
0

프론트엔드

목록 보기
10/38

JavaScript에서 자료형(type)이란 값(value)의 종류다. 각각의 자료형은 고유한 속성과 메서드를 가지고 있다. 자료형은 크게 두 가지로 구분할 수 있는데, 바로 원시 자료형(primitive type)과 참조 자료형(reference type)으로 구분된다.

원시 자료형(Primitive Type)

하나의 고정된 저장 공간을 차지하는 데이터를 모두 원시 타입(primitive type) 데이터 라고 한다. 객체가 아니면서 메서드도 가지지 않는 데이터로, string, number, boolean, undefined, null, symbol, bigint 타입이 존재한다.

원시 자료형 타입에 대한 설명 🔗 링크

예시

const str = 'gildong';
const num = 123;
let bool = true;

원시 자료형의 특징

  • 원시 자료형을 변수에 할당하면 메모리 공간에 값 자체가 저장
  • 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값 자체가 복사되어 전달(이 과정에서 복사된 값은 새로운 메모리 공간에 저장)
  • 원시 자료형은 변경 불가능한 값(immutable value). 즉, 한 번 생성된 원시 자료형은 읽기 전용(read only) 값.

변경 불가능한 값과 재할당의 차이

변수에 새로운 값을 재할당하는 것을 변경이 가능하다고 생각할 수 있다. 하지만 여기서 말하는 변경이 불가능 하다는 것은 메모리 안에 이미 자리하고 있는 값을 변경할 수 없다는 것이다. 재할당은 새로운 메모리 공간에 새로운 값을 저장하고 변수가 이 새로운 메모리를 바라보게 하는 것이다. 따라서 원시 자료형은 어떤 상황에서도 불변하는 읽기 전용 데이터이다. 이는 원시 자료형이 높은 신뢰성을 가질 수 있는 요인이기도 하다.

참조 자료형(Reference Type)

원시 자료형이 아닌 모든 자료형은 참조 자료형이다. 여러 데이터를 한 번에 다룰 수 있는 배열, 객체가 대표적인 참조 자료형이고, 함수도 참조 자료형으로 분류한다.
예시

const arr = [0, 1, 2, 3];
let obj= {name: 'kimcoding', age: 45};
function sum (x, y) { return x + y }

참조 자료형의 특징

  • 참조 자료형을 변수에 할당하면 메모리 공간에 주솟값이 저장.
  • 참조 값을 갖는 변수를 다른 변수에 할당하면 주솟값이 복사되어 전달.
  • 참조 자료형은 변경이 가능한 값(mutable value).

JavaScript는 참조 자료형을 어떻게 저장할까?

JavaScript는 특별한 저장 공간인 힙(heap)에 참조 자료형을 저장한 후, 그 저장공간을 참조할 수 있는 주소값을 변수에 저장한다. 따라서 변수 arr에 해당하는 저장공간에는 주소값이 저장되어 있고, 그 주소값을 통해 참조 자료형에 접근할 수 있다. 이를 참조한다(refer)고 한다.

let arr = [0, 1, 2, 3];

이때 변수 arr이 주솟값 9876을 바라본다고 가정하자. 그럼 주소 9876에는 [0, 1, 2, 3]이 살고있는 것이다. 변수에 저장된 주솟값을 쫓아가 그 주솟값 안에 저장된 값에 접근하는 것이다.

profile
새싹 개발자 🌱

0개의 댓글