Study/JavaScript

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

ujam 2021. 12. 19. 16:45
728x90
반응형

얕은 복사(shallow copy)

 

얕은 복사는 주소값을 복사하는 것을 의미합니다.

const obj1 = { a: 10, b: 20};
const obj2 = obj1;

obj2.a = 30;

console.log(obj1 === obj2); // true
console.log(obj1.a); // 30

obj1 객체를 obj2라는 새로운 객체에 할당했습니다. 이를 참조 할당이라고 합니다.

두 객체를 비교하면 true가 출력됩니다.

결국 데이터가 해당하는 데이터의 주소(참조)값을 전달해주어 데이터를 공유하는 것을 의미합니다.

 

 

 

 

 

 

깊은 복사(deep copy)

깊은 복사는 값 자체를 복사하는 것을 의미합니다.

let a = 10;
let b = a;

b = 20;

console.log(a); // 10
console.log(b); // 20
console.log(a === b); // false

 

a를 b에 할당했습니다 그럼에도 a의 값은 변경되지 않습니다.

두 값을 비교하면 false가 출력됩니다.

javascript의 원시 타입은 깊은복사가 가능하며,

독립적인 변수에 어떠한 값 자체를 할당하는 것이라고 생각할 수 있습니다.

 

 

728x90
반응형