얕은 복사가 주소만 복사하는 것 아닌가요?
503
投稿した質問数 1
영상 3분 47초쯤에
//shallow copy with Object.assign()
부분에서 bArray와 cArray를 비교하는데, 참조하는 위치가 달라서 같지 않다고 false를 반환합니다.
shallow copy가 주소값만을 복사하고 deep copy가 값을 하나하나 복사하려 독립적인 메모리를 차지하는 것으로 알고 있는데, 어느 부분에서 잘못 이해한 건가요?ㅜㅜ
回答 1
0
안녕하세요, 인프런 AI 인턴입니다.
백스님의 질문에 대한 답변을 드리겠습니다.
님께서 말씀하신 ‘얕은 복사(Shallow Copy)‘와 ‘깊은 복사(Deep Copy)‘에 대해 조금 혼동이 있으신 것 같아요.
얕은 복사는 객체의 최상위 수준의 속성들만 복사하여 새 객체를 생성합니다. 만약 속성 값 중에 객체가 있다면, 그 객체의 참조(주소 값)만 복사하게 됩니다. 따라서 복사된 객체와 원본 객체는 중첩된 객체에 대해선 동일한 참조를 공유하게 되죠.
깊은 복사는 객체에 중첩된 객체까지 모두 새롭게 복사하여, 완전히 독립된 메모리를 차지하는 새 객체를 만듭니다. 따라서 원본과 복사된 객체 간에 어떤 참조도 공유하지 않습니다.
영상에서 Object.assign()을 이용한 부분은 얕은 복사를 수행하는 예입니다. 이 때 bArray와 cArray가 가리키는 중첩된 객체의 참조는 동일하므로, 이를 비교할 때 false를 반환하는 것은 올바른 동작입니다.
만약 bArray와 cArray 내부에 배열이나 객체와 같은 참조형 데이터가 저장되어 있다면, 이들의 참조 값(주소)은 동일할 것이므로 얕은 복사에서는 원본 데이터에 영향을 줄 수 있습니다. 깊은 복사를 원한다면 JSON.parse(JSON.stringify(object)) 같은 방법 또는 깊은 복사를 지원하는 라이브러리 함수를 사용해야 합니다.
님의 코드에 대한 구체적인 상황은 제가 직접 볼 수 없기 때문에 지금 드린 설명이 정확한 답변이 되었을지 모르겠습니다. 만약 더 구체적인 도움이 필요하다면, 해당 강의의 ‘질문하기’ 기능을 통해 강사님께 질문하시면 더 정확한 피드백을 받으실 수 있을 것입니다.
도움이 되셨길 바랍니다. 프로그래밍 학습에 더 많은 성취가 있기를 진심으로 응원합니다!
counter01.html은 어디있을까요?
1
9
1
존재하지 않는 일기 url입력 시 alert이 두 번 떠요
0
28
1
useState 직접 구현 부분에서 질문이 있습니다.
1
31
1
학습을 하고 블로그에 정리를 해도 괜찮을까요?
1
34
1
교재(3쇄)와 강의 내용 문의
0
33
2
섹션2번 부분 강의 화면이 잘 못된것 같아서 문의합니다.
0
23
1
call stack 표현이 잘못표현된것이 아닌가요?
0
71
2
React 와 Virtual DOM 의 이야기 영상 실행이 안됩니다.
0
35
1
일반 강의와 차이점?
1
53
1
!= 연산자의 역할
0
35
1
주석처리한 buttons가 작동하는 이유
0
102
1
document 객체가 콘솔에 화면처럼 뜨질않는데 무슨이유일까요?
0
149
1
vscode 에서 LiveSever를 통해 연 페이지에 왜 코드가 바로 연동이 되어 출력이 안될까요??
0
200
1
Start 버튼을 연속으로 두 번 누르면 Stop버튼이랑 Reset 버튼이 작동하지 않습니다.
0
127
1
Shallow Freeze 관련 질문드립니다!
0
212
1
var 로 선언해서 window 객체의 프로퍼티로 만들기
0
142
1
랜덤 난수의 정수화
0
189
1
섹션9 Todo App 질문드립니다.
0
204
1
강의 자료 소스 복사
0
317
1
Todo App(1) 스타일 파일 코드
0
453
2
변수를 먼저 let val; 선언하는 이유가 있나요?
0
238
1
[섹션2 Document Object 이용해보기] lists라는 변수를 forEach를 사용하려면...
0
192
1
해당 강의의 index.html 소스코드 파일을 받고 싶습니다!
0
256
1
[Event Delegation] 요소의 id를 변수 선언 없이 바로 사용할 수 있는 이유?
1
405
1

