더북(TheBook)

설명만으로는 이해하기 어려우니 예제를 보면서 살펴보겠습니다.

const array = [{ j: 'k' }, { l: 'm' }];
const shallow = [...array]; // 얕은 복사
console.log(array === shallow); // false
console.log(array[0] === shallow[0]); // true

예제에서는 ... 연산자로 arrayshallow에 복사합니다. 값을 비교해 보면 arrayshallow 변수는 서로 다르지만(false), array[0]shallow[0]은 같습니다(true). 외부 객체는 복사되어 참조 관계가 끊어지면서 다른 값이 됐지만, 내부 객체는 참조 관계가 유지되어서 그렇습니다.

이 구조를 그림으로 표현하면 다음과 같습니다. 그림을 보면 배열이 하나 더 생겼습니다. 외부 객체가 배열이어서 얕은 복사로 배열이 복사되었습니다.

그림 2-31 얕은 복사 시 메모리 구조

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.