
얕은 복사와 깊은 복사에 대한 이해

방효진
2026. 02. 24. 오후 03:35·34
#얕은 복사와 깊은 복사
Q1.얕은 복사 vs 깊은 복사 (용어에 대한 이해)
얕은 복사
- 숫자와 같은 원시 값은 독립적으로 복사되지만, 객체나 배열이 포함되어 있다면 그 객체나 배열이 참조(메모리 주소)로 공유되는 형태의 복사를 얕은 복사라고 한다.

깊은 복사 - 객체 내부의 객체까지 전부 독립적으로 새로 복사하는 것을 말한다.
Q2. 얕은 복사의 문제점
- 참조값을 그대로 공유하기 때문에 한쪽 값을 수정하면 다른 값도 함께 바뀌어버리는 현상이 발생할 수 있다.
03. javascript에서 깊은 복사를 하는 방법
일반 깊은 복사
- 자바스크립트에서 그냥 깊은 복사를 시도할 경우 객체의 내부 구조가 복잡하면 구조 전체를 복사하는 것이 어려워질 수 있다.
JSON을 이용한 깊은 복사 - 깊은 복사를 그나마 쉽게 해주는 기술이다.
JSON.stringify()/JSON.parse()활용 JSON.stringify(): 객체 -> 문자열, 직렬화JSON.parse(): 문자열 -> 객체, 역직렬화- 객체 <-(직렬화)-> 문자열 <-(역직렬화)-> 객체 형태로 이루어진다.
Q4. 직렬화 / 역직렬화 (JSON에서)
직렬화
- 객체를 JSON 문자열로 변환하는 것을 말한다.
역직렬화
- JSON 문자열을 객체로 변환하는 것을 말한다.
Q5. 프론트엔드(브라우저) 와 서버간의 통신에서 json이 사용되고 직렬화와 역직렬화가 사용되는 이유
- 자바스크립트 객체는 컴퓨터의 메모리 주소에 얽힌 상태이므로 전송이 가능한 형태로 바꾸는 것이 필요하다. 따라서 직렬화 과정을 거친 뒤에, JSON 형태로 전송하고 전송받은 곳에서 역직렬화를 통해 다시 객체로 변환하는 과정을 거쳐야 한다.
Q6. 자바스크립트에서 직렬화/역직렬화는 JSON 하나뿐인가?
- 아니다. structuredClone() 등이 존재한다.
- MDN
34

방효진
댓글
댓글을 작성하려면 이 필요합니다.