JavaScript - 얕은 복사, 깊은 복사

박선규's avatar
Feb 20, 2024
JavaScript - 얕은 복사, 깊은 복사
 
📌
현존하는 모든 그림은 데이터를 기반으로 그림을 그린다.
엔진에다 던지면 prev(이전) next(이후)
엔진이 변경을 감지하는 경우는 이전 데이터가 있는 경우다.
이 엔진을 리엑트라고한다.
전제 조건이 원본 데이터가 불변 해야 된다. 여기서 얘기하는 불변은 메모리 영역 안에서 변경이 불가능하며,
변수에 할당할 때 새로운 값이 만들어져 주소 값이 재 할당 된다는 의미다. 딮 카피 → 깊은 복사(원본 불변 카피)
Animal a = new Animal(); Animal b = new Animal(a);
 
얕은 복사 → 주소 값 (메모리에 하나만 뜬다.)
Animal a = new Animal(); Animal b = a;
 
next 데이터 = fiterArr
여기서 prev 데이터 = arr
DELETE
 

얕은 복사

📌
얕은 복사는 데이터의 주소 값을 복사한다. 그래서 데이터 변경이 이 일어나면 원 데이터도 함께 변경된다.
<script> let arr = [1, 2, 3]; //배열에 4 추가하기 arr.push(4); console.log(arr); </script>
notion image
 
notion image
📌
얕은 복사는 기존 데이터가 변경 되기 때문에 데이터의 무결성이 깨진다. 그러나 데이터의 주소를 복사하기 때문에 메모리 관점에서는 유리하다.
 

깊은 복사

📌
깊은 복사는 실제 데이터를 메모리 공간에 복사하는것을 의미한다. 복사된 데이터에 변경이 발생해도 원본 데이터는 영향을 받지 않는다.
<script> let arr = [1, 2, 3]; console.log(arr); let copyArr = [0, ...arr, 4]; console.log(copyArr); </script>
notion image
깊은복사
notion image
Share article

p4rksk