Primitive type
변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터의 값을 보관합니다.
원시 타입 자료형은 모두 변수 선언, 초기화 , 할당시 값이 저장된 메모리 영역에서 직접적으로 접근한다, 즉 변수에 새 값이 할당 될 때 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경한다는 뜻을 가지고 있습니다.
변수에 새로운 값을 할당하면 변수가 참조하는 메모리 공간의 주소가 바뀌게 됩니다.
값을 복사합니다.
let a= 1;
b = a;
a = 3;
console.log(a) // 3
console.log(b) // 1
각 변수 간에 원시타입 데이터를 복사할 경우 데이터의 값이 복사됩니다.
Reference type
자바스크립트는 객체의 메모리를 직접 조작하지 않고, 해당 객체에 대한 '참조'를 조작합니다. 따라서 객체를 가리키는 값은 '참조로 접근한다'라고 합니다.
크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없으며, 변수에는 데이터에 대한 참조만 저장됩니다.
참조 타입은 변수의 값이 저장된 메모리 블럭의 주소를 가지고 있고, 자바 스크립트 엔진이 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근합니다.
값을 참조합니다
let a = {name: "철수", age: 12};
b = a;
a.name = "훈이"
console.log(a) // {name: "훈이", age: 12};
console.log(b) // {name: "훈이", age: 12};
b에 a가 들어있다고 생각하는게 아닌 b가 a를 가르키고 있다(참조하고 있다)고 생각해야합니다.
각 변수 간에 참조 타입 데이터를 복사할 경우 데이터의 참조가 복사됩니다.