프론트쪽을 개발하다가 최근에 버그를 발견하고 포스팅 남겨본다.
var endDate = new Date(date).getTime();
var now = new Date().getTime();
var diff = parseInt((endDate-now)/(24*3600*1000));
//if ((!Object.is(diff, -0)) && (diff <= 7)) { => 이게 맞는방식
if ((diff >= 0) && (diff <= 7)) { => 버그 생성 방식
return true;
} else {
return false;
}
위의 코드는 두 날짜를 비교하는 코드이다.
diff는 두 날짜의 차이를 숫자로 나타내 주는데 현재 날짜가 endDate보다 크다면 -0을 반환하게 된다.
만약 위와 같이 diff가 0보다 클 경우라고 조건을 주게 되면 -0일 경우 포함이 안될거라고 생각하지만....그렇게 생각한다면 경기도 오산이다.
자바스크립트에서는 다음과 같이 0과 -0이 같다고 생각한다.
따라서 값을 비교할 때는 위의 코드에서 주석처리된 것과 같이 처리해주어야 한다.
자세한 설명은 아래의 stackoverflow의 글을 참고하도록 하자
stackoverflow.com/questions/7223359/are-0-and-0-the-same
'Programming > JavaScript' 카테고리의 다른 글
[ JavaScript ] 자바스크립트 객체 복사할 때 주의사항 (0) | 2020.12.02 |
---|---|
[ 자바스크립트 ] javascript date.getMonth() bug? 한 달전 달이 출력되는 이슈? (0) | 2020.09.25 |
vue js inside v-for pass data to modal component (0) | 2020.09.16 |
[ Javascript ] 자바스크립트 ajax 크로스도메인 이슈(CORS) (0) | 2018.07.26 |
[ jQquery ] jQuery플러그인으로 쿠키 다루기 (0) | 2018.07.23 |