얕은복사와 깊은복사

MihyunCho·2021년 3월 28일
0
post-thumbnail

얕은복사(Shallow Copy)

  • 사본을 만들어내지 않고 원본은 참조하도록 복사한 척 한다.
  • 복사한 객체가 바뀌면 참조되고 있는 객체 값 또한 수정된다.

깊은복사(Deep Copy)

  • 복사한 객체 값이 수정되어도 참조되고 있는 객체의 값이 변하지 않는다.
  • spread operator로 복사한 것이 깊은 복사.
  • 배열 내장 메소드인 slice는 사실상 얕은 복사지만, 1차원이면 깊은 복사처럼 흔히 사용하고 있다.
    2차원 이상일때는 slice는 같은 객체 주소를 참조하기 때문에 값이 변경되어 사용 불가능함.


slice()로 2차원 배열 객체를 복사 했을 때 일어나는 일.

mdn 에서 slice() 찾아봤을 때 의문인 점이 있어서 직접 콘솔에 쳐봤다.

1차원 배열 요소들은 여전히 원본 값을 바꾸지 않지만, 2차원 내에 있는 요소들은 원본 값도 바꾼다!
1차원 배열 요소들은 원시값이라 그렇고, 2차원 배열은 참조타입이라서 그렇다고 이해하고 넘어가겠다.
2차원 배열부터는 전개구문(spread operator)를 쓰는걸로!

profile
Sic Parvis Magna 🧩

0개의 댓글