2022
얕은 복사와 깊은 복사 본문
얕은 복사(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