추후에 같은 실수를 할 거 같아서 작성한 글입니다. 짧습니다.
다른 개발자들이 내 서비스를 테스트해주는데 문제가 생겨서 보니,
javascript 의 NPE 문제였다. 에러가 나는 부분을 확인해봤다.
function dateFormatString(dateString = "") {
// DB 에서 받아오는 dateString 형태는 20221102 이다. YYYYMMDD
return dateString === "" ?
dateString :
dateString.substring(0,4) // 여기서 에러!
+ "." + dateString.substring(4,6)
+ "." + dateString.substring(6,8);
}
처음에는 의아했다. 나는 null 이든 뭐든 falsy value 가 들어오면
무조건 파라미터의 기본값 세팅이 되는 줄 알았다.
완전 착각이었다.
falsy value 가 아니라, 그냥 dateFormatString()
처럼 호출했을 때만 기본값이 적용되는 것이다. 아래처럼 코드를 수정했다.
function dateFormatString(dateString) {
dateString = dateString || "";
// DB 에서 받아오는 dateString 형태는 20221102 이다. YYYYMMDD
return dateString === "" ?
dateString :
dateString.substring(0,4) // 여기서 에러!
+ "." + dateString.substring(4,6)
+ "." + dateString.substring(6,8);
}
참고로 nullish 연산자(??
) 사용 가능하다
function dateFormatString(dateString) {
dateString = dateString ?? "";
//... 생략...
}
null
과 undefined
에만 반응한다.