자바스크립트의 원시타입 : Number, String, Boolean, Null, undefined, symbol
자바스크릅티의 참조타입 : Object, array, Function, Date, RegExp, Map,set.....
원시타입 예시 1 - 자바스크립트의 원시 타입은 불변한다?
let a = 1
console.log(a) // 1
아주 간단한 예제가 있다 변수 a에 원시타입인 1을 할당해 주었다. 이럴 경우 JavaScript의 메모리 영역에서는 어떤 변화가 일어날까?

변수 영역에 생긴 변수 a는 데이터 영역에 있는 1의 값을 가리킨다. 이때 1의 값을 직접적으로 참조하고 있는것이 아닌 데이터 “1”이 저장된 주소를 저장한다.
원시타입 예시 2 - 원시값에 다른 값을 재 할당 해보자
let a = 1
a = 2
console.log(a) // 2

변수 a에 다른 값을 재 할당할 경우 기존의 값을 덮어씌우는게 아닌 “2”가 저장된 새로운 주소를 변수a에 저장한다. 이때 기존에 있던 “1”은 더이상 아무런 참조가 이루어지지 않을 경우 가비지컬렉터에 의해서 초기화된다.
원시타입 예시 3 - 서로 참조하기
let a = 1
let b = a;
a = 2
console.log(a) // 2
console.log(b) // 1

만약 변수 b에 변수 a의 값을 할당하고 다시 변수 a의 값에 2를 재 할당 하면 어떻게 될까? 이런 경우에는 변수 b는 a가 기존에 참조하고 있던 주소값을 참조한다. 그리고 변수 a는 새로운 2의 메모리 주소를 참조하게된다.