핵심 답변
📌 얕은 복사(Shallow Copy)객체의 최상위 속성만 복사하고, 중첩된 객체는 같은 참조를 공유합니다. 중첩 객체를 수정하면 원본도 함께 바뀝니다.
📌 깊은 복사(Deep Copy)중첩된 객체까지 모두 새로운 메모리에 복사합니다. 원본에 전혀 영향을 주지 않습니다.
얕은 복사 방법: { ...obj }, Object.assign(), [...arr]
깊은 복사 방법: structuredClone(), JSON.parse(JSON.stringify()), lodash.cloneDeep()
예시 코드
javascript
const original = { name: '철수', address: { city: '서울' } };
// 얕은 복사
const shallow = { ...original };
shallow.address.city = '부산'; // original.address.city도 변경됨!
// 깊은 복사
const deep = structuredClone(original);
deep.address.city = '부산'; // original에 영향 없음핵심 용어
📌 structuredClone()브라우저 내장 깊은 복사 API입니다. JSON.parse(JSON.stringify())보다 안전하며 Date, Map, Set, undefined도 올바르게 복사합니다.
📌 참조 타입(Reference Type)배열, 객체 등은 값이 아닌 메모리 주소(참조)를 저장합니다. 얕은 복사 시 이 참조가 공유됩니다.