String, Number, Boolean, Undefined, Symbol, Bigint, Null
데이터 보관함 한 칸에 하나의 데이터만 넣을 수 있는 원시적인 방식
let 과 var 는 재할당이 가능하지만 const는 재할당이 불가
변수의 크기는 고정되어 있음
원시 자료형은 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수 있음
또한 원시 자료형을 변수에 할당할 경우 값자체 복사가 일어남
원시 자료형을 변수에 할당할 경우 값 자체 복사가 일어남
각 변수 간에 원시 타입 데이터를 복사할 경우 데이터의 값이 복사된다.let x = 100; let y = x; x = 99; console.log(y) // 100
배열[], 객체{}, 함수(function(){})
원시 자료형이 아닌 모든 것은 참조 자료형
변수의 크기가 동적으로 변함
데이터 보관함이 아닌 특별한 보관함(heap)에 저장이 됨
heap에는 데이터가 위치한 곳을 알려주는 주소가 저장이 되있음
원시 자료형이 할당될 때에는 변수에 값(value)자체가 담기고, 참조 자료형이 할당될 때에는 보관함의 주소(reference)가 담김
각 변수 간에 참조 타입 데이터를 복사할 경우, 데이터의 참조가 복사된다.
let x = {count: 100}; let y = x; x.count = 99; console.log(y) // 99
원시 자료형과 참조 자료형의 근본적인 차이는 보관함의 크기에서 발생한다
원시 자료형은 고정된 크기의 보관함을 사용한다
참조 자료형은 동적으로 크기가 변하는 특별한 보관함을 사용한다
원시 자료형이 할당 될 때에는 변수에 값 자체가 담기고,
참조 자료형이 할당 될 때는 보관함의 주소가 담긴다.