
// 얕은 복사와 깊은 복사
// 데이터 타입과 연관이 깊다
// 데이터 타입엔 원시타입, 참조타입이 있다
// 원시타입 (숫자, 문자, boolean, null, undefined, Bigint, Symbol)
// 참조타입 (배열, 객체, Set, Map, Function)
// 둘의 구별은 메모리에 데이터가 저장되는 위치에 따라 구별
// 메모리 안에 데이터는 1차로는 스택, 2차로는 힙 영역을 지남
// 원시타입은 1차 관문인 스택 영역에 데이터 자체가 저장
// 참조타입은 1차 관문인 스택 영역에 주소가 저장이 되고
// 2차 영역인 힙 영역에 데이터 자체가 저장이 됨
// 이 데이터 타입에 따른 메모리 저장위치가 얕은 복사, 깊은 복사와 연관성이 있음
// 깊은 복사 -> 기존 값에 영향이 없음
const a = 'a';
let b = 'b';
b = 'c';
// a 는 상관이 없음 a -> a, b -> c
// 얕은 복사 -> 기존 값에 영향이 있음 -> 참조 데이터의 복사에 사용
const a2 = {one: 1, two: 2};
let b2 = a2;
b2.one = 3;
console.log(a2); // one -> 3의 값을 지님
// 원시타입은 스택 영역에 데이터가 저장이 되니 스택 영역에서 데이터를 복사
// 참조타입도 스택 영역에서 데이터가 복사가 이루어 지는데
// 참조타입은 스택 영역에 값 데이터가 담긴 힙 영역의 주소를 지니고 있음
// 즉, 실제 데이터가 담긴 힙 영역의 주소를 복사하는 것Share article