[js] function 파라미터 기본값 설정은 falsy value 를 위한 게 아니다.

식빵·2022년 12월 14일
0
post-thumbnail

추후에 같은 실수를 할 거 같아서 작성한 글입니다. 짧습니다.

다른 개발자들이 내 서비스를 테스트해주는데 문제가 생겨서 보니,
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 ?? "";
	//... 생략...
}

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글