객체가 아니면서 method를 가지지 않는 6가지의 타입.
string / number / bigint / boolean / undefined / symbol / (null)
Ex) let num1 = 123; // 변수에 하나의 데이터만 담음.
위 여섯가지 타입은 하나의 "정보"
즉, 데이터를 담고 있다.
왜 원시 자료형이냐?
옛날엔 데이터 저장소(메모리)의 용량이 제한되어 변수 하나에 데이터 용량이 제한된
하나의 원시 자료형 밖에 담을 수 밖에 없었기 때문!
원시 자료형이 아닌 모든 것은 참조 자료형.
배열, 객체, 함수가 대표적이다.
참조 자료형은 하나의 변수에 여러 정보를 담을 수 있는데,
이는 변수에 값이 아닌 주소를 저장하기 때문에 가능하다.
또한, 참조 자료형이 보관되는 데이터 보관함은 원시 자료형이 보관되는 데이터 보관함과 달리
특별한 데이터 보관함(heap)에 저장된다.
참조 자료형은 주소가 할당된다.
let x = { foo: 3 }; let y = x; y.foo = 2; // Q. x.foo의 값은? // 값이 3이였던 y.foo에 2를 할당한 후, 같은 주소를 바라보고 있던 x.foo도 2가 됨.
원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고,
참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.
그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라,
동적으로 크기가 변하는 특별한 보관함(heap)을 사용할 수 있습니다.