구조 분해와 스프레드를 얕은 복사로 이해하기
구조 분해는 값을 꺼내고 스프레드는 새 배열·객체를 만들기 쉽지만, 중첩 객체까지 자동으로 복제하지는 않는다.
| 작업 | 겉보기 | 실제 경계 | 주의할 버그 |
|---|---|---|---|
| Object spread | 새 객체 생성 | 1단계 속성만 새로 복사 | 중첩 객체는 같은 참조 |
| Array spread | 새 배열 생성 | 요소 참조는 그대로 | 객체 요소 mutation 공유 |
| Destructure | 필드 값을 변수로 꺼냄 | 꺼낸 값이 참조일 수 있음 | 값을 바꾸면 원본에 영향 가능 |
| Nested update | 중첩 단계마다 새 객체 필요 | { ...a, b:{ ...a.b } } | 한 단계만 복사 |
| Deep copy | 깊은 복사가 필요할 때 별도 도구 | structuredClone | 함수/특수 객체 처리 주의 |
얕은 복사 경계를 모르면 상태 변경이 겉으로는 새 객체처럼 보여도 내부 값은 원본과 연결될 수 있다.