인프런 커뮤니티 질문&답변

kurt님의 프로필 이미지

작성한 질문수

[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

2.5) 원시타입 VS 객체타입

얕은복사와 깊은복사

해결된 질문

24.09.07 20:59 작성

·

98

·

수정됨

1

2.5) 원시타입 VS 객체타입 약 08:50.

 

안녕하세요, 강사님의 강의를 만족하며 잘 듣고있는 수강생입니다.

해당부분에 다소 오해의 소지가 될 내용으로 추가 강의 업데이트시 반영되었으면 하는부분이 있어서 올려봅니다.

'객체의 참조값을 복사함' 이라는 문장은 맞다고 볼 수 있지만, 이를 얕은 복사라 부르기엔 오해의 소지가 많을것으로 보입니다. o2는 o1의 포인터값을 그대로 똑같이 가지고 있을 뿐, o2가 가리키는 값이 o1과 동일하게 '새로운 값이 만들어지지 않았기 때문' 입니다.

 

또한, '새로운 객체를 생성하면서 프로퍼티만 따로 복사함'이라는 문장또한 맞다고 볼 수 있지만, 이를 깊은 복사라 부르기엔 오해의 소지가 역시 많을것으로 보입니다.

실제로 공식문서에서도 이를 논하기에는 쓸모없다고 얘기하고있지만, 그러면서 Shallow copy에 대해서 아래와 같이 강조하고있습니다.

For shallow copies, only the top-level properties are copied, not the values of nested objects.

 

때문에, 추가적인 nested objects에 문제가 따르며 실제로 이때문에 이를 얕은복사라고 많은 개발자들이 소통하고 있는것으로 알고있습니다.

특히, '원본 객체가 수정될 수 없어 안전함' 까지 있으니, 더욱더 top-level의 중요성이 강조되지 않는 것으로 보여 모호한것으로 보입니다.

 

평소 강사님의 강의, 강연등을 즐겨듣고 있는 수강생으로써 약간의 다소 오해의 소지가 있는부분을 언급해 볼 뿐이오니 너그러이 내용을 참조해주시면 감사하겠습니다.

 

항상 감사합니다.

이상입니다.

답변 1

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

2024. 09. 08. 10:51

안녕하세요 kurt님 이정환입니다.

우선 감사의 인사를 드립니다. 한 수 배웠습니다 이 내용은 제가 확실히 확인해보지 못했네요, 얕은 복사의 경우 향후 수정시에는 "참조값 복사" 또는 "참조에 의한 복사"로 정정하는게 더 엄밀히 정확한 표현이 될 것 같습니다. 깊은 복사의 경우 수강생 분들께서 복잡해 하실 까봐 1depth 깊이의 객체를 예로 들어 보여드렸었는데 그런 정의상의 모호함이 있었을 수 있겠군요

알려주셔서 정말 감사합니다 🙇‍♂

kurt님의 프로필 이미지
kurt
질문자

2024. 09. 08. 10:53

제가 많이 배우고있습니다.

강사님의 입장에서 생각해볼때

깊게 알려주려고 하시면 한도끝도 없이 어려워지고,

쉽게 설명하자고 하니 애매해지는,,항상 딜레마이실거라고 생각합니다.

 

다시한번 감사드립니다.

kurt님의 프로필 이미지

작성한 질문수

질문하기