ougi FE

깊은 복사와 얕은 복사가 무엇이고 그 둘의 차이점은 뭘까? 본문

JavaScript

깊은 복사와 얕은 복사가 무엇이고 그 둘의 차이점은 뭘까?

ougi 2025. 3. 3. 23:47
728x90

오늘은 코딩테스트를 풀다 자주 봐왔던 개념인 깊은 복사와 얕은 복사를 자세히 알아보고자 합니다


얕은 복사 깊은 복사가 무엇일까?

얕은 복사란 객체의 참조 값(주소)를 복사하는 것 입니다

깊은 복사란 객체의 실제 값을 복사하는 것 입니다

 

JavaScript에서의 값은 원시 값과 참조 값으로 나누어집니다

원시 값은 기본 자료형을 말합니다

원시 값에는 Number, String, Boolean, Null, undefined 등이 있습니다

 

참조 값은 여러 자료형으로 구성되는 메모리에 저장된 객체입니다

참조 값에는 Object, Symbol 등이 있습니다

 

깊은 복사의 예시

const 똥 = "응가";
let school = "student";

school = "teacher";

console.log(똥) // result: "응가"
console.log(school) // result: "teacher"

이렇게 보면 실제 값이 그대로 복사되는 것을 볼 수 있습니다 

 

  • JSON.parse && JSON.stringify: 객체를 json 문자열로 변환

 

얕은 복사의 예시

const a= {
	student: "teacher",
}

let school = a;
school.student = "me";

console.log(a.student); // result: "me"

이렇게 원래 a도 바뀌는 것을 보면 이것은 참조값을 복사한 얕은 복사라고 볼 수 있습니다

 

  • Array.prototype.slice(begin, end): begin부터 end까지 얕은 복사본을 새로운 배열 객체로 반환
  • Object.assign(ob, ob2): ob에 ob2 값을 덮어씌우며 수정된 ob return
  • ...(spread 전개 연산자): 스프레드 연산자로 배열이나 객체를 복사

마무리

오늘은 깊은 복사 얕은 복사를 배워보았는데 코딩 테스트를 풀면서 그냥 제대로 공부하지 않고 넘어갔었는데

확실히 개념을 잡고 이해하니 더 잘 활용할 수 있을거 같아 기대가 됩니다

글을 읽어주셔서 감사합니다

728x90