JavaScript

깊은 복사와 얕은 복사에 대한 심도있는 이야기

자바스크립트 개발자라면 반드시 알고 있어야하는 깊은 복사와 얕은 복사에 대해

Moon
WATCHA
Published in
15 min readJul 24, 2020

--

모든 프로그래머에게 어린아이 예절 교육하듯이 끊임없이 중요하다고 강조되고 있는 이야기, “데이터를 깊게 & 얕게 때에 따라 잘 복사한다”. 기업 면접에서 가장 빈번하게 나오는 주제이기도 한데, 과연 “복사”라는 행위에 대해 어디까지 알고 있는가?

언어마다 복사라는 행위는 다르게 정의되어 있을 수 있다. 그러나 적어도, 지금까지 누군가에게 자신이 자바스크립트 개발자라고 말하고 다니고 있었다면 지금 이 자리에서 잠시 눈을 감고 스스로에게 질문해보자. 나는 자바스크립트로 복사에 대해 어디까지 알고 있었는지.

읽기 전에

이 글은 여러분이 자바스크립트, 조금 더 명확하게는 ECMA-262 에 명시된 다음의 내용을 모두 알고 있다는 가정하에 작성되었다. 그리고, 이 글은 자바스크립트 명세서를 읽고 이해할 수 있을 정도의 수준은 되어야 제대로 이해할 수 있으니 난이도가 조금 있는 셈이다.

  • Spread Operator
  • Object.assign
  • JSON.stringify
  • Iterable

특히, 이터러블에 대해서 모른다면 해당 개념에 대해 먼저 공부하고 이 글을 읽기를 권한다.

설명을 시작하기에 앞서

우선, 여러가지 예제를 가지고 설명할텐데, 위의 checker 메소드로 입력받은 값의 같음을 비교할 예정이다. ramda 는 자바스크립트 함수형 라이브러리로 함수형 아키텍쳐를 구현할 때 많이 사용하는 유용한 라이브리다. checker 는 모든 입력 값이 같다면 true 를, 아니면 false 를 콘솔에 출력한다. 더 자세히 알고 싶다면 이 곳을 참조하기 바란다.

--

--

Moon
WATCHA
Writer for

Frontend React w/ Typescript developer based in S.Korea. Interested in UX/Testing/FE. mgyang95@gmail.com