깊은 복사, 얕은 복사

38기 정관훈·2023년 2월 27일
0
post-thumbnail

# 깊은 복사와 얕은 복사는 자바스크립트에서 객체를 복사할 때 사용되는 용어입니다.


얕은 복사(Shallow copy)는 객체를 복사할 때, 해당 객체의 주소값을 참조하기 때문에 객체 안에 있는 값이나 속성들이 참조형 데이터일 경우, 값이 복사되지 않고 해당 값이 저장된 주소값이 복사됩니다. 즉, 원본 객체와 복사된 객체는 같은 참조값을 가지며, 하나의 객체를 수정하면 다른 객체도 영향을 받습니다.

const original = { name: 'John', age: 25 };
const copy = original;

copy.age = 30;

console.log(original.age); // 30
console.log(copy.age); // 30

깊은 복사(Deep copy)는 원본 객체와 복사본 객체가 완전히 별개의 객체가 되도록 복사합니다. 이를 위해서는 객체 내부에 참조형 데이터가 있을 경우, 해당 데이터를 복사하는 과정이 필요합니다. 따라서, 객체 내부의 모든 값이나 속성을 하나하나 복사하는 작업이 필요합니다.

const original = { name: 'John', age: 25 };
const copy = {...original};

copy.age = 30;

console.log(original.age); // 25
console.log(copy.age); // 30

하지만, 이런 방식으로 복사를 하더라도 객체 내부에 또 다른 객체가 있을 경우, 해당 객체는 얕은 복사가 되므로 같은 문제가 발생할 수 있습니다. 이 경우, 객체 내부의 모든 객체에 대해서도 깊은 복사를 수행해야 합니다.

따라서, 얕은 복사와 깊은 복사는 객체를 복사할 때 주의해서 사용해야 하며, 객체의 구조와 데이터 타입에 따라 적절한 방법을 선택해야 합니다.

profile
프론트엔드 개발자 (22.9.19~~)

0개의 댓글