Array의 첫 번째 인자로 length 프로퍼티가 있는 객체를 넣어주는 이유는 저번 포스트에 설명해놓았다.https://velog.io/@dlwnstjrzz/자바스크립트-10가지-코드-트릭
1차원 배열을 깊은 복사할 때는 slice메서드를 통해 메모리에서 참조하는 객체를 다르게 하는 것이 가능했다.하지만 2차원 배열에서 이 방법을 똑같이 사용한다면1차원 배열은 복사가 되지만 2번째 depth배열은 얕은 복사가 되어버린다.이를 해결하기 위해서는 map메서드
통과가 안되는 조건을 먼저 작성해서 리턴 조건을 설정해준 다음 재귀를 돌리는 형식이 기본으로 쓰인다.