23.1.19[얕은 복사 vs 깊은 복사 간단 정리]

커피 내리는 그냥 사람·2023년 1월 19일
0

항해99

목록 보기
95/108

참고 블로그

얕은 복사 vs 깊은 복사

첫 면접 때도 그렇고 코딩애플 리액트 영상을 볼 떄도 뭔가 헷갈리는 개념이었다. 이번 기회에 정리하고 넘어가도록 하겠다.

얕은 복사(shallow Copy)

복사가 되긴 했지만 변수가 가르키는 주소값이 같으면 얕은 복사라고 한다.

  • 방법 1. Object.assign을 이용한 방법이 있다.
  • 방법 2. 스프레드 연산자를 사용할 떄 가능하다.

두 연산 모두 뎁스 1까지만 깊은 복사가 이뤄진다고 보기 때문에 얕은 복사가 되는 것이라고 볼 수 있다.

코딩애플 강좌 때 배열 객체에 대해 값을 변경하기 위해 set000을 할 때 딥카피가 스프레드 연산자에서 된다고 했는데 내가 생각했을 땐 1뎁스 되는 걸 설명하신 것이 아닐까 싶다.

깊은 복사(deep Copy)

반대로 완전히 새로운 주소 값을 가지게 되면 깊은 복사가 된 것이라고 볼 수 있다.

  • 방법 1. 커스텀 함수를 사용한다.
  • 방법 2. lodash 같은 라이브러리를 쓴다.
  • 방법 3. JSON.Stringify를 쓴다.

-> 문제점 : 제이슨을 쓸 때는 문제가 생길 수 있다는데?

함수, Date 객체, 정규표현식 등의 데이터는 복사되지 않고 두번째 이유는 다른 깊은복사 방법들(재귀함수, lodash) 보다 느리다는 단점이 있다.

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글