얕은 복사(shallow copy) vs 깊은 복사(deep copy)

돌리의 하루·2023년 1월 17일
0

얕은 복사와 깊은 복사

🦋얕은 복사(shallow copy)는 원본 객체 타입 테이터가 저장된 주소를 공유하는 복사본을 만드는 것입니다. 결과적으로 원본이나 복사본 중 하나를 변경하면 다른 객체가 변경될 수 있습니다. 따라서 원본이나 복사본에 예상치 못한 변경이 발생할 수 있습니다. 재할당 하는 경우가 포함됩니다.

🦋깊은 복사(deep copy)의 경우는 원본 객체 타입 테이터 저장된 주소를 공유하지 않는 복사본을 만드는 것입니다. 결과적으로 원본이나 복사본을 변경할 때 다른 객체가 변경되지 않습니다. 즉, 원본이나 복사본을 의도하지 않게 변경되는 것을 방지할 수 있습니다. spread 문법, slice도 이에 포함한다.

// 원시타입(primitive type)
const a = 1;
const b = 1;
console.log(a === b); // true

// 객체 타입(object/reference type)
const c = {};
const d = {};
console.log(c === d)  // false

const e = [];
const f = [];
console.log(e === f)  // false

원시타입에는 서로 비교하게 되면 true가 나오지만,
참조자료형의 경우 false가 나오게 된다.
그 이유는 JavaScript에서는 객체 타입의 데이터를 변수에 저장할 때 해당 객체 타입의 데이터가 저장되는 메모리의 공간의 주소값을 저장하기 때문입니다.

profile
진화중인 돌리입니다 :>

0개의 댓글