깊은복사와 얕은 복사가 무엇인가요?

0

기술면접 - JS

목록 보기
2/18

깊은복사와 얕은 복사가 무엇인가요?

깊은 복사(Deep Copy)얕은 복사(Shallow Copy)객체 또는 배열과 같은 복합 데이터 타입을 복사하는 두 가지 다른 방법입니다.

깊은 복사

  1. 깊은 복사 (Deep Copy):

    • 깊은 복사는 원본 객체 또는 배열의 값들을 완전히 새로운 메모리 공간에 복사합니다.
    • 따라서 새로운 객체와 원본 객체는 서로 다른 메모리 주소를 가지게 됩니다.
    • 깊은 복사는 중첩된 객체나 배열까지 모두 복사하여 독립적인 개체로 만듭니다.
    • 주의해야 할 점은 깊은 복사를 할 때, 객체 안에 또 다른 객체의 참조가 있는 경우, 모든 객체를 재귀적으로 복사해야 온전한 깊은 복사가 이루어집니다.

    예시:

    const originalArray = [1, 2, [3, 4]];
    const deepCopy = JSON.parse(JSON.stringify(originalArray));
    
    deepCopy[2][0] = 5;
    
    console.log(originalArray); // [1, 2, [3, 4]]

얕은 복사

  1. 얕은 복사 (Shallow Copy):

    • 얕은 복사는 원본 객체 또는 배열의 참조(reference)를 복사합니다.
    • 즉, 새로운 객체가 원본 객체와 같은 메모리 주소를 참조하게 됩니다.
    • 따라서 새로운 객체의 값이 변경되면 원본 객체도 영향을 받게 됩니다.
    • 얕은 복사는 객체의 최상위 수준 속성만 복사되며, 중첩된 객체나 배열은 동일한 참조를 유지합니다.

    예시:

    const originalArray = [1, 2, [3, 4]];
    const shallowCopy = originalArray.slice();
    
    shallowCopy[2][0] = 5;
    
    console.log(originalArray); // [1, 2, [5, 4]]

깊은 복사와 얕은 복사는 데이터를 복사하는 목적에 따라 선택되어야 합니다. 만약 중첩된 객체의 변경이 원본 객체에 영향을 주면 안된다면 깊은 복사를 사용해야 합니다. 그러나 깊은 복사는 성능상의 이슈가 있을 수 있으므로, 데이터가 복잡하지 않거나 중첩된 객체를 포함하지 않는 단순한 경우에는 얕은 복사를 사용하는 것이 더 효율적일 수 있습니다.

profile
지치지 않는 백엔드 개발자 김성주입니다 :)

0개의 댓글

관련 채용 정보