JavaScript에서 NaN은 무엇입니까? 그 유형은 무엇입니까? 값이 NaN과 같은지 어떻게 안정적으로 테스트할 수 있습니까?
5351 단어 webdevnodebeginnersjavascript
NaN
는 전역 Object
의 속성입니다. 즉, Global 범위에서 사용할 수 있는 변수입니다.Not-A-Number의 약자이지만 흥미롭게도 유형은
number
입니다.console.log(typeOf NaN); // "number"
number
작업이 해당 개체에 적용될 때 컨텍스트에서 number
로 계산되지 않거나 계산되지 않는 개체를 나타내는 데 사용됩니다.NaN
에 대한 또 다른 흥미로운 사실은 절대 자신과 같지 않다는 것입니다. 따라서 NaN == NaN
또는 NaN === NaN
는 항상 false
입니다.console.log(NaN == NaN); // false
console.log(NaN === NaN); // false
NaN 테스트
a
NaN
는 다른 NaN
와 결코 같지 않기 때문에 값의 자체 비교는 값이 NaN
인지 테스트하는 가장 신뢰할 수 있는 방법입니다.function isThisNaN(value) { return value !== value };
isThisNaN(1); // false
isThisNaN(NaN); // true
isThisNaN(Number.NaN); // true
isThisNaN('NaN'); // false
객체가
NaN
인지 테스트하는 다른 방법은 isNaN()
전역 메서드와 Number.isNaN()
를 사용하는 것입니다.console.log(isNaN('hi')); //true
console.log(isNaN('4'); // false
위의 두 예에서
isNaN()
는 비교하기 전에 string
에 대한 유형 강제 변환을 기다립니다. 첫 번째 경우 'hi'
에서 string
는 number
로 강제 변환되고 숫자를 반환하지 않기 때문에 NaN
로 평가됩니다. '4'
가 있는 두 번째 경우에는 number
로 평가되므로 NaN
가 아닙니다. 따라서 isNaN()
를 사용하는 것은 NaN
를 테스트하기에 그다지 신뢰할 수 없습니다.반대로
Number.isNaN()
는 현재 값을 테스트합니다.console.log(Number.isNaN('hi')); // false
console.log(Number.isNaN('4')); // false (this time because
// it's a string in the
// context of a Number method)
유형 강제는
Number.isNaN()
에 없습니다. 대신 문자열을 직접 비교합니다. 위의 코드에서 'hi'
와 '4'
는 모두 string
이므로 NaN
메서드의 컨텍스트에서는 Number
가 아닙니다. 이렇게 하면 Number.isNaN()
값을 테스트하는 동안 isNaN()
가 NaN
보다 더 안정적입니다.참조
Reference
이 문제에 관하여(JavaScript에서 NaN은 무엇입니까? 그 유형은 무엇입니까? 값이 NaN과 같은지 어떻게 안정적으로 테스트할 수 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anewman15/what-is-nan-what-is-its-type-how-can-you-reliably-test-if-a-value-is-equal-to-nan-4bp3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)