2022

얕은 복사와 깊은 복사 본문

JavaScript

얕은 복사와 깊은 복사

__g__ 2022. 5. 20. 19:33

얕은 복사(shallow copy)

얖은 복사는 참조(주소)값의 복사를 나타낸다.

const obj = { vaule: 1 }
const newObj = obj;

newObj.vaule = 2;

console.log(obj.vaule); // 2
console.log(obj === newObj); // true

obj 객체를 새로운 newObj 객체에 할당하였으며 이를 참조 할당이라 부른다. 복사 후 newObj 객체의 value값을 변경하였더니 기존의 obj.value값도 같이 변경된 것을 알 수 있다. 두 객체를 비교해도 true로 나온다. 이렇게 자바스크립트의 참조 타입은 얕은 복사가 된다고 볼 수 있으며, 이는 데이터가 그대로 생성되는 것이 아닌 해당 데이터의 참조 값(메모리 주소)를 전달하여 결국 한 데이터를 공유하는 것이다.

 

깊은 복사(deep copy)

깊은 복사는 값 자체의 복사를 나타낸다.

let a = 1;
let b = a;

b = 2;

console.log(a); // 1
console.log(b); // 2
console.log(a === b); // false

변수 a를 새로운 b에 할당하였고 b 값을 변경하여도 기존의 a의 값은 변경되지 않는다. 두 값을 비교하면 false가 출력되며 서로의 값은 단독으로 존재하다는 것을 알 수 있다. 이렇게 자바스크립트의 원시 타입은 깊은 복사가 되며, 이는 독립적인 메모리에 값 자체를 할당하여 생성하는 것이라 볼 수 있다.

'JavaScript' 카테고리의 다른 글

react S.A.실습 과제  (0) 2022.05.20
호이스팅과 TDZ  (0) 2022.05.20
JavaScript 불변 객체 만드는 방법  (0) 2022.05.20
JavaScript 자료형  (0) 2022.05.20
JavaScript 특성  (0) 2022.05.20
Comments