깊은복사 vs 얕은복사

Seuling·2023년 3월 15일
0

기술면접준비

목록 보기
4/4

리액트 공식문서를 읽는중, ... 스프레드연산자는 얕은복사이다!

Note that the ... spread syntax is “shallow”—it only copies things one level deep. This makes it fast, but it also means that if you want to update a nested property, you’ll have to use it more than once.

이부분을 보고 얕은복사지! 얕은복사는 말그대로 얕게복사하니까 주소값을 가져오는것이고, 그러니까 원본값에 영향을미칠수있지 라는 단순한생각을했다.
하지만 저 it only copies things one level deep. 이 말이 이해가 되지않았다.
오직 한단계 깊이만을 복사한다는게 뭐지 ??
그럼 중첩된건 복사를 안한다는건가? 라는 생각을했지만, 잘못되었다!
chatGPT에게 물어보았다 🤭

그렇다! 한단계 깊이까지는 그냥 복사를하고, 중첩된 그 이상은 얕은복사를하기에 복사본의 중첩된 값을 수정하면 얕은복사로 원본값이 수정된다는 말이였다.

다시 보자면, 여기서 obj2.b는 중첩된 객체로 되어있음으로 참조로 복사되어 원본값에 영향을 준다는 것이고,
그렇다면 한가지 더 궁금한점!! 얕은복사는 다 원본값에 영향을주는것이 아닌가?🤔
그렇담 obj2.a의 값을 변경하면 obj1.a의 값에도 영향을줘야하는것아닌가??

primitive data type은 참조 대신 값을 복사한다는것을 알게되었다!

깊은복사와 얕은복사 면접질문을 준비하며 많이 외웠지만, 정확하게는 이해하고 있지 못했던 부분을 chatGPT를 통해서 정확히 이해할 수 있게 되었다! ^ㅡ^

profile
프론트엔드 개발자 항상 뭘 하고있는 슬링

0개의 댓글