[javascript] JavaScript에서 숫자가 NaN인지 어떻게 확인합니까?
Firefox의 JavaScript 콘솔에서만 시도했지만 다음 설명 중 어느 것도 true를 반환하지 않습니다.
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
답변
이 코드를 사용해보십시오 :
isNaN(parseFloat("geoff"))
여부를 확인하기위한 어떤 값 대신 숫자, NaN의 여기를 참조 : 어떻게 자바 스크립트에서 NaN의 테스트합니까?
답변
방금 효과적인 JavaScript 라는 책 에서이 기술을 보았습니다 .
NaN은 자신과 동일하지 않은 것으로 취급되는 유일한 JavaScript 값이므로 항상 값이 동일한 지 확인하여 NaN인지 테스트 할 수 있습니다.
var a = NaN;
a !== a; // true
var b = "foo";
b !== b; // false
var c = undefined;
c !== c; // false
var d = {};
d !== d; // false
var e = { valueOf: "foo" };
e !== e; // false
@allsyed가 코멘트 할 때까지 이것을 깨닫지 못했지만 이것은 ECMA 사양에 있습니다 : https://tc39.github.io/ecma262/#sec-isnan-number
답변
이 코드를 사용하십시오 :
isNaN('geoff');
isNaN()
MDN에 대한 문서를 참조하십시오 .
alert ( isNaN('abcd')); // alerts true
alert ( isNaN('2.0')); // alerts false
alert ( isNaN(2.0)); // alerts false
답변
Number 유형의 값이 값 인지 여부를 테스트하는 NaN
한 전역 함수 isNaN
가 작업을 수행합니다.
isNaN(any-Number);
JS의 모든 유형에 적용되는 일반적인 접근 방식의 경우 다음 중 하나를 사용할 수 있습니다.
ECMAScript-5 사용자의 경우 :
#1
if(x !== x) {
console.info('x is NaN.');
}
else {
console.info('x is NOT a NaN.');
}
ECMAScript-6를 사용하는 사람들 :
#2
Number.isNaN(x);
ECMAScript 5와 6에서 일관성을 유지하기 위해이 폴리 필을 Number.isNan에 사용할 수도 있습니다.
#3
//Polyfill from MDN
Number.isNaN = Number.isNaN || function(value) {
return typeof value === "number" && isNaN(value);
}
// Or
Number.isNaN = Number.isNaN || function(value) {
return value !== value;
}
자세한 내용은 이 답변 을 확인 하십시오.
답변
NaN은 그렇게 테스트 할 수없는 특별한 값입니다. 내가 방금 공유하고 싶었던 흥미로운 것은
var nanValue = NaN;
if(nanValue !== nanValue) // Returns true!
alert('nanValue is NaN');
NaN 값에 대해서만 true 를 반환하며 안전한 테스트 방법입니다. 동일한 변수가 서로 같지 않은지 테스트하는 것은 분명하지 않기 때문에 함수에 래핑되거나 주석을 달아야합니다.
답변
다음 isNaN(value)
과 같은 이유로 전역 함수 호출을 사용해야합니다 .
- 크로스 브라우저에 대응
- 설명서는 isNaN 을 참조하십시오
예 :
isNaN('geoff'); // true
isNaN('3'); // false
이것이 도움이되기를 바랍니다.
답변
현재 ES6 , Object.is(..)
절대 어떤지 두 값을 테스트하는 데 사용될 수있는 새로운 유틸리티이다 :
var a = 3 / 'bar';
Object.is(a, NaN); // true