Programming/JavaScript
[ JavaScript] 자바스크립트 값을 비교할 때 (0과 -0)
brocess
2020. 12. 2. 18:36
반응형
프론트쪽을 개발하다가 최근에 버그를 발견하고 포스팅 남겨본다.
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
Are +0 and -0 the same?
Reading through the ECMAScript 5.1 specification, +0 and -0 are distinguished. Why then does +0 === -0 evaluate to true?
stackoverflow.com
반응형