JS 객체를 함수를 통해 넘길때 call by value 형식을 취하기 때문에 메모리의 이점을 노리지 않는 이상 deep copy를 통해 원본객체를 안전하게 복사하는것이 좋다. 스프레드 연산자와 Object.assign 위의 2가지 방법 ex) ...a , Object.assign 으로는 1단계 까지는 원본 객체를 건드리지않고 복사가 잘되나 Depth가 2단계 이상인 객체는 원본객체가 수정됩니다. 1. 재귀함수 const copy = o =>{ let out = {} let value, key for(key in o){ value = o[key] out[key] = (typeof value === "object" && value != null)? copy(value) : value } return out..