얕은 복사가 주소만 복사하는 것 아닌가요?
495
投稿した質問数 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)) 같은 방법 또는 깊은 복사를 지원하는 라이브러리 함수를 사용해야 합니다.
님의 코드에 대한 구체적인 상황은 제가 직접 볼 수 없기 때문에 지금 드린 설명이 정확한 답변이 되었을지 모르겠습니다. 만약 더 구체적인 도움이 필요하다면, 해당 강의의 ‘질문하기’ 기능을 통해 강사님께 질문하시면 더 정확한 피드백을 받으실 수 있을 것입니다.
도움이 되셨길 바랍니다. 프로그래밍 학습에 더 많은 성취가 있기를 진심으로 응원합니다!
3강 질문
0
18
1
74. 데이터 캐시 - 1 (이론) 강의 영상 누락
0
27
1
2강 nodejs 3단계 설명 질문
0
33
1
imagesLoaded에 관한 질문
0
19
2
useEffect와 lifecycle문의
0
26
2
프론트엔드 학습 수준 문의
0
37
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
48
2
최근 코테, 과제 테스트 트렌드
0
68
2
lucide react 아이콘 설치
0
46
2
17강 zustand store 서버에서 생성
1
36
1
주석처리한 buttons가 작동하는 이유
0
94
1
document 객체가 콘솔에 화면처럼 뜨질않는데 무슨이유일까요?
0
140
1
vscode 에서 LiveSever를 통해 연 페이지에 왜 코드가 바로 연동이 되어 출력이 안될까요??
0
169
1
Start 버튼을 연속으로 두 번 누르면 Stop버튼이랑 Reset 버튼이 작동하지 않습니다.
0
116
1
Shallow Freeze 관련 질문드립니다!
0
198
1
var 로 선언해서 window 객체의 프로퍼티로 만들기
0
137
1
랜덤 난수의 정수화
0
178
1
섹션9 Todo App 질문드립니다.
0
194
1
강의 자료 소스 복사
0
309
1
Todo App(1) 스타일 파일 코드
0
448
2
변수를 먼저 let val; 선언하는 이유가 있나요?
0
231
1
[섹션2 Document Object 이용해보기] lists라는 변수를 forEach를 사용하려면...
0
186
1
해당 강의의 index.html 소스코드 파일을 받고 싶습니다!
0
243
1
[Event Delegation] 요소의 id를 변수 선언 없이 바로 사용할 수 있는 이유?
1
394
1

