const arr = [1,2,3,4];
const arrCj = arr; //참조 : 하나를 바꾸면 원본도 바뀜
const arrThineCopy = [...arr]; //얕은 복사 : 원시 값들은 분리가 되는데, 그 안에 있는 객체들은 참조관계처럼 따라감
const arrDeepCopy = JSON.parse(JSON.stringify(arr)); //완전 별개로 취급이 된다.
JSON.parse(JSON.stringify()); 와 같은 방식으로
깊은 복사를 할 경우
성능도 느리고 함수나 Math, Date 같은 객체를 복사할 수 없다고 한다.
따라서 실무에선 lodash같은 라이브러리를 사용하곤 한다.
또한 arr.slice(); 함수 역시 대표적 얕은 복사
arr.slice(); 또는 [...arr];