[원시 타입 데이터]
string, number, bigint, boolean, undefined, symbol, (null)
- 데이터 크기와 관계없이 하나의 값(데이터)을 저장한다.
- 과거에는 데이터 저장소(메모리)의 용량이 제한이 있었기 때문에 하나의 값만 저장했다.
- 객체가 아니면서 method를 가지지 않는 데이터이다.
- 값 자체에 대한 변경이 불가능(immutable)하다.
- 변수에 다른 데이터를 할당할 수는 있다.
let a = 5;
let b = a;
b = 3;
// a의 값은?
// a = 2 원시 자료형은 자료의 수정이 불가능
[참조 타입 데이터]
원시 자료형이 아닌 모든 것. 배열([])과 객체({}), 함수(function(){}) etc..
- 값을 저장하는 대신 데이터가 담긴 저장소의 주소를 저장한다.
- 사이즈의 크기를 조절할 수 있다. (동적(dynamic)으로 변한다)
let a = {foo : 5};
let a = b;
b.foo = 3
// a.foo의 값은?
// a.foo = 3 참조자료형은 동적으로 크기가 변함.
// a.foo = 5 라고 할당해 주었지만 a = b 라 재할당 해주면서 값이 바뀜.
⭐️⭐️⭐️중요⭐️⭐️⭐️
- 원시 자료형이 할당될 때는 변수에 값(value) 자체가 담긴다.
- 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.
- 원시 자료형은 기존에 고정된 크기의 보관함을 이용한다.
- 참조 자료형은 동적으로 크기가 변하는 보관함을 이용한다.