얕은 비교와 깊은 비교 (+ 얕은 복사와 깊은 복사) #5
Replies: 2 comments 1 reply
-
리사가 이미 잘 설명해준 것 같아서 한가지 참고하면 좋을 점만 덧붙이겠습니다~! HTML에 최근 추가된
|
Beta Was this translation helpful? Give feedback.
-
비슷한 맥락으로, 얕은 복사와 깊은 복사에 대해서도 알아봤습니다. 원시값은 값 복사 시 복사된 값을 다른 메모리에 할당합니다.
참조값은 변수가 객체의 주소를 가리키는 값이기 때문에 복사된 값(주소)이 같은 값을 가리킵니다.
얕은 복사는 객체 복사 시 복사본의 속성이 원본 객체와 같은 참조를 공유하는 복사입니다. 깊은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조를 공유하지 않는 복사입니다. 깊은 복사를 하는 방법에는 재귀 함수를 이용한 복사, JSON.stringify(), 라이브러리 사용 등이 있습니다. 재귀 함수를 이용한 복사는 다음과 같습니다.
JSON.stringify() 방식은 다음과 같습니다.
참고 자료 |
Beta Was this translation helpful? Give feedback.
-
얕은 비교
원시 자료형은 값을 비교함
참조 자료형은 값 또는 속성을 비교하지 않고, 참조되는 위치를 비교함
깊은 비교
깊은 비교에서는 객체라도 값으로 비교함
깊은 비교는 두 방식을 사용함
얕은 비교를 사용하는 상황
리액트의 상태가 변경될 때 불변성을 유지하기 위해 원본을 수정하지 않고 새로운 객체를 생성함
얕은 비교를 통해 각 객체의 참조 값 비교를 통해 변경 여부를 판단하게 됨
깊은 비교를 사용하는 상황
객체나 배열 내부 중첩된 구조가 있고, 내부 값까지 변경 사항을 감지해야 하는 경우 깊은 비교를 사용함
객체나 배열의 특정 키 값만 변경되었을 때만 업데이트를 수행해야 하는 경우 깊은 비교를 사용함
리액트에서 얕은 비교를 사용하는 경우
대부분의 상황에서는 얕은 비교를 기본으로 사용하고, 성능이나 정확성에 영향을 줄 수 있는 특정 상황에서만 깊은 비교를 추가로 적용함
참고 자료
https://velog.io/@neighborkim/%EC%96%95%EC%9D%80-%EB%B9%84%EA%B5%90Shallow-Compare-%EC%99%80-%EA%B9%8A%EC%9D%80-%EB%B9%84%EA%B5%90Deep-Compare
https://lulu-developmentlog.tistory.com/234
Beta Was this translation helpful? Give feedback.
All reactions