JavaScript에서 NAN의 예약 키워드는 무엇입니까?
-
05-09-2019 - |
문제
표현식의 결과를 테스트하고 싶다면 함수가 NAN을 반환하면 어떻게 확인합니까?
예 : $('amount').value.toInt()!='NaN'
^ 작동하지 않으며 반환 된 값이 문자열이 아니라고 가정합니다.
$('amount').value.toInt()!=NaN
^도 작동하지 않는 것 같고 이것은 분명해 보입니다.
그렇다면 반환 된 값이 숫자가 아닌 것을 어떻게 확인합니까?
해결책
NAN 값은 그 자체를 포함하여 모든 것에 불평등 한 것으로 정의됩니다. 값이 NAN인지 테스트하십시오 isNaN()
적절하게 기능합니다. (ECMAScript 6 추가 a Number.isNan()
비 번호 주장에 대한 시맨틱이 다른 기능이지만 2015 년 현재 모든 브라우저에서는 지원되지 않습니다).
NAN 값으로 사용할 수있는 두 가지 내장 속성이 있습니다 : Global NaN
재산 (예 : window.NaN
브라우저에서) 및 Number.NaN
. 그것은이다 ~ 아니다 언어 키워드. 오래된 브라우저에서 NaN
잠재적으로 혼란스러운 결과와 함께 속성을 덮어 쓸 수 있지만 ECMAScript 5 표준은 쓰레기가 아닌 것으로 만들어졌습니다.
- @Some에서 의견에서 지적했듯이 글로벌 기능도 있습니다. isfinite () 유용 할 수 있습니다.
다른 팁
NAN에 대한 숫자 작동 결과를 확인하는 가장 좋은 방법은 다음과 같은 방식으로 Aproach를하는 것입니다.
var x = 0;
var y = 0;
var result = x/y; // we know that result will be NaN value
// to test if result holds a NaN value we should use the following code :
if(result !=result){
console.log('this is an NaN value');
}
그리고 끝났습니다.
비결은 NAN이 다른 값과 비교할 수 없다는 것입니다.
이것은 JavaScript입니다 (좋고 기괴한 언어)
평등 연산자 (== 및 ===)는 NAN에 대한 값을 테스트하는 데 사용할 수 없습니다. 대신 숫자를 사용하십시오 () 또는 isnan ()을 사용하십시오.
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true