자바스크립트에서 원시 타입의 데이터 즉, 원시자료형(primitive data types)는 객체가 아니면서 메소드를 가지지 않는 6가지의 타입을 얘기한다.
string, number, bigint, boolean, undefined, symbol, (null)
위 그림처럼 원시자료형의 보관함인 변수에는 무조건 하나씩의 데이터들만 담을 수 있다. 그리고 그 안에 있는 값들을 활용할 때는 이름표 역할을 하는 변수명은 건드리지 않은 채 안에 있는 데이터만 교체하면 나중에 필요할 때도 바로바로 찾아 쓸 수 있다. 이 원시 자료형들은 스택(Stack)이라는 공간에 올라간다.
자바스크립트에선 원시 자료형이 아닌 모든 것은 참조 자료형이다.
대표적으로 배열([ ]), 객체({ }), 함수(function())이 있다.
예전 컴퓨터가 탄생되고 초창기에는 배열이라는 개념이 사용되기 어려워서 변수에 문자열을 담아
split
을 하는 형식으로 배열 비스무리하게 사용했다. ex) .csv 같은 쉼표로 구분된 데이터에서도 그 흔적을 볼 수 있다.00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, ...
자바스크립트에서도 이를
string
변수로 선언해준다면 분명 쉽게 데이터를 추가할 수 있다는 것을 알고 있다.let arr = '00, 01, 02'; arr += ', 03'; // '00, 01, 02, 03'
하지만 변수에는 넣을 수 있는 데이터의 크기가 제한되어 있을 뿐만 아니라, 나중에 원하는 데이터를 수정 및 활용하는데 매우 귀찮을 것이다.
이런 이유로 데이터의 크기가 동적으로 변하는 특별한 데이터 보관함이 필요했던 것이다.
여기서 바로 그 메모리의 보관함이 힙(Heap)이라는 공간이다. 참조 자료형은 기존 원시 자료형이 스택(Stack)에 변수명과 함께 그 데이터를 자신이 직접 갖고 있는 것과는 다르게 변수에 주소를 갖고 있는다. 그리고 힙(Heap)에서는 데이터를 담고 있는 크기를 마음대로 늘렸다 줄였다할 수 있어서 배열과 객체 등등의 자료를 다루기에 아주 용이하다. 이로써 스택 공간에서는 변수 내에 힙 공간의 주소만 갖고 있으면 된다.
이미지 출처: 코드스테이츠 교육 자료
질 좋은 교육 감사합니다. 꾸벅 (_ _)