결론부터 말하자면 JS에서 날짜 값을 비교할 때에는 null이 들어가는지 체크를 꼼꼼하게 해줘야 한다.
아래와 같이 두 개의 변수에 날짜 값 (new Date()
라든가, moment
라든가..)을 비교하는 구문이 있었는데, dateValue
에 null
이 들어가게 되면 의도치 않은 결과가 초래될 수 있다.
if(dateValue1 < dateValue2){
// do something ...
}
null 과 날짜 값을 비교해주면 null이 Date객체보다 작은 경우 true를 반환한다.
//true를 반환
null < new Date() // true
null <= new Date() // true
//false를 반환
null > new Date() // false
null >= new Date() // false
Chrome Console에서 실행시킨 결과
null
과 객체값의 대소비교를 했을때 false
가 떨어진다는 사실을 알고 있었기에 Date
객체의 비교도 그럴 줄 알았는데, 아니었다.
앞으로는 날짜값을 비교할때 조심하는 것을 넘어서, 특히 JS같이 유연한 언어는 보다 방어적으로 작성하도록 노력을 기울여야겠다. :)
방어 코드를 작성하는 스타일은 개인마다 다를 수 있으므로 생략한다.
댓글 영역