원시 자료형(primitive data type)
number
, string
, boolean
, null
, undefined
와 같은 고정된 저장 공간을 차지하는 데이터 ( + bigint
, symbol
)
- 변수에 값(value) 자체가 담김
- 변수에는 데이터의 크기와는 관계 없이 하나의 데이터만 담음
- 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수는 있음
- 함수에서 어떤 일이 발생했던가와 관련이 없이 초기에 할당된 값 유지
참조 자료형(reference data type)
array
, object
, function
과 같이 대량의 데이터를 다루기 적합
- 보관함의 주소(reference)가 담김 > 변수에 값이 아닌 주소를 저장
- 동적으로 크기가 변하는 특별한 보관함 Heap 사용
- 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장
- 대량의 데이터가 들어오는 경우 고정된 데이터 공간을 사용하는 것이 비효율적이기 때문에 크기가 상황에 따라 커졌다가 작아지는(동적으로 크기가 변하는) Heap 사용
- 배열([])과 객체({}) 등 참조 자료형을 읽을 때, 미리 주소값과 메모리 값을 잡아둔다고 생각