깊은 복사, 얕은 복사

홍성준·2022년 12월 22일
0

자바스크립트에는 원시값과 참조값이 존재한다. 원시값은 Number, String, Boolean, Null, Undefined가 있으면 이를 뺀 나머지는 모두 참조값이다. 그래서 변수에 원시 타입의 값을 할당하면 메모리에는 실제 데이터 값이 저장이 된다. 그래서 할당된 변수를 조작하면 메모리에 저장된 실제 값이 조작된다.

참조값은 여러 자료형으로 구성이 되는 메모리에 저장된 객체이다. 변수에 객체나 배열을 저장하면 독립적인 메모리 공간에 값을 저장하고, 변수에는 저장된 메모리 공간의 참조값을 저장하게 된다.

그래서 원시값을 복사할 때 그 값은 또 다른 메모리공간에 저장을 하기 때문에 복사된 값을 수정한다 해도 원본에는 영향을 끼치지 않는다. 하지만 참조값을 복사하게 된다면 두 변수 모두 원본데이터에 대한 주소값을 저장하고 있기 때문에 복사한 값을 바꾼다면 영향을 끼치게 된다. 결국엔 둘 중 하나만 수정이 된다해도 서로 값이 바뀌게 된다.

원시값을 복사하는 것처럼 실제 값을 복사하는 것을 깊은복사라 하고, 참조값처럼 참조된 메모리의 주소를 저장하는 것을 얕은 복사라한다.

profile
안녕하세요

0개의 댓글