인프런 커뮤니티 질문&답변
얕은복사와 깊은 복사에 대해서 질문해요
작성
·
318
0
1. 만약 const num= [a: 1, b: 2] 처럼 주어질 때
const cloneNum = num 이와 같이 그냥 할당하는
경우는 num, cloneNum 둘 다 동일한 주소값을
바라보고 있으므로 (얕은 복사가 아닌)참조관계 라고 하나요?
[여태 이런 경우는 얕은 복사로 이해했거든요..
그래서 불변성을 지키기 위해 전개 연산자(...) 같은 걸
사용해서 깊은 복사를 해야 한다고 (다른 곳에서)배웠던 거 같아서요.
그리고 속성이 기본값이 아닌 참조 타입인 경우
1차 깊은 복사만, 내부 속성(2차 깊은 복사)까지 복사되려면
immer같은 라이브러리등을 사용해야 한다고]
2. 얕은복사는 최상위 객체만 기존 객체와의
참조 관계를 끊는 (내부는 아직 기존 객체의 주소값을
바라보는 ) 걸 말하고 깊은 복사는 내부의
속성들(내부 속성이 객체 또는 배열)까지 참조 관계가
끊어진 상태를 말하나요?
3. 그럼 저기 num 배열을
const cloneNum2 = [...num]; 처럼 하면
내부 속성은 객체 또는 배열이 아니니 깊은 복사가
되는 건가요?
4. 추가로 값인 경우 예를 들어서
let str = 'hello';
let cloneStr = str 이렇게 할당하게 되면
기본값은 그냥 깊은 복사가 되는 건가요?
제가 질문을 잘못해서 죄송해요;;
얕은복사, 깊은 복사의 의미가 애매해서
질문했어요 ㅜㅜ
퀴즈
useReducer에서 상태(state)를 업데이트할 때 가장 중요하게 지켜야 할 원칙은 무엇인가요?
기존 상태 객체를 직접 수정해야 합니다.
항상 새로운 상태 객체나 배열을 반환해야 합니다.
이전 상태와 새로운 상태를 콘솔에 기록해야 합니다.
상태 업데이트는 반드시 동기적으로 이루어져야 합니다.





질문에 답변 감사드립니다.
저거 배열 오타 ;;
const num= [{ a: 1 }, {b: 2}]