JavaScript에서 0과 -0 구별
ECMAScript 5.1 사양에서는 숫자로 0과 -0을 구별하지만 왜 비교 0 === -0은 JavaScript에서 true로 평가됩니다.
IEEE 754 표준 및 부호 있는 0
JavaScript는 숫자 표현에 IEEE 754 표준을 사용합니다. 두 개의 0이 존재합니다: 0(양의 0)과 -0(음의 0). IEEE 754에서 0은 일반적으로 0으로 인코딩되지만 0과 -0 모두 유효한 표현입니다.
엄격한 평등 비교 알고리즘
ECMA의 섹션 11.9.6 -262 사양은 엄격한 평등 비교 알고리즘을 정의합니다. 수치 비교의 경우 엄격한 동등 비교에서 0과 -0이 동일하게 취급됨을 명시적으로 명시합니다.
x가 0이고 y가 -0이면 true를 반환합니다.
x가 -0이고 y가 0이면 true를 반환합니다.
따라서 0과 -0은 수치적으로 구별될 수 있지만 편의상 및 논리적 이유로 엄격한 동등 비교에서는 동일한 것으로 간주됩니다.
Object.is 비교
ES2015에서는 보다 정확한 비교를 위해 Object.is 메서드를 도입했습니다. Object.is는 -0과 0을 명시적으로 구별하며 비교할 때 false를 반환합니다.
Object.is(-0, 0); // false
결론적으로 JavaScript는 IEEE 754 표준을 사용하며 코딩 규칙을 단순화하기 위해 엄격한 동등 비교에서 0과 -0을 동일하게 취급합니다. 그러나 필요한 경우 Object.is 방법을 사용하면 더 미묘한 비교가 가능합니다.
위 내용은 JavaScript가 `===` 비교에서는 0과 -0을 동일하게 처리하지만 `Object.is`에서는 처리하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!