아래 함수는 문제가 있다.
매개변수 startAt에 객체를 직접 할당해버리기 때문이다.
만약 remainDateCalculator에 let today = new Date('2023-12-13') 과 같은 Date 객체를 인수로 넣고 호출한다면 today 변수는 오염이 될 것이다.
이 함수에 Date 객체를 인수로 넣은 후 실행하게 되면 startAt.setDate(startAt.getDate() + 5)로 인해 파라미터 startAt 은 강제적으로 +5일이 된 Date 객체가 된다.
해결 방법
이러한 에러를 파라미터 차원에서 방지해주기 위해서는 remainDateCalculator(new Date()) 와 같이 호출해서 사용하거나, startAt은 무조건 원시값(string)만 올 수 있도록 보장해주어야 한다.
가장 좋은 해결방법은 파라미터 startAt을 그대로 사용하지 말고 파라미터의 값을 다른 변수에 복사해서 사용하는 것이다.
'개발 일지' 카테고리의 다른 글
에러 처리) assert 함수 활용 (0) | 2024.01.08 |
---|---|
기록으로 남기는 docker 명령어 실행 순서 및 명령어 (2) | 2023.12.13 |
나보려고 남기는 pnpm + nextjs 프로젝트 세팅 (1) | 2023.12.05 |
차트 라이브러리 스크롤링 이슈 해결 (0) | 2023.11.29 |
컴포넌트 사이즈 설정 (0) | 2023.11.16 |