>  기사  >  웹 프론트엔드  >  JavaScript NaN 및 Infinity 특수 값 ​​[번역]_javascript 팁

JavaScript NaN 및 Infinity 특수 값 ​​[번역]_javascript 팁

WBOY
WBOY원래의
2016-05-16 17:49:491368검색
1.NaN

JavaScript에서 NaN은 "숫자가 아님"을 나타냅니다. 이 값은 주로 문자열을 구문 분석하는 중 오류가 발생할 때 반환됩니다.
코드 복사 코드는 다음과 같습니다.

> Number("xyz")
NaNNaN


의 이름은 "숫자가 아님"이지만 숫자가 아니라고도 말할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

> NaN !== NaN
true

유형은 "숫자"입니다. 🎜>
코드 복사 코드는 다음과 같습니다.
>


1.1 NaN 감지
JavaScript에서 NaN은 기다리고 싶지 않은 유일한 값이므로 등호 연산자를 사용하여 확인할 수 없습니다. 값이 NaN인지 여부를 확인하려면

코드를 복사하세요.
> isNaN(NaN)
true


Kit Cambridge

isNaN()의 문제점을 지적했습니다. 이는 암시적으로 매개변수를 숫자로 변환하므로 매개변수가 문자열로 변환될 수 없는 경우에도 숫자인 경우 true(NaN으로 변환됨)도 반환됩니다.

코드 복사 코드
> Number("xyz")
NaN
> isNaN("xyz")
true


동일한 이유는 isNaN이 다른 많은 객체에 대해서도 true를 반환하기 때문입니다.


> 숫자({})
NaN
> isNaN({})
true

> )
NaN
> isNaN(["xzy"])
true


valueOf 메서드를 재정의하는 동일한 사용자 정의 개체:


> var obj = { valueOf: function () { return NaN } }; 🎜>> Number(obj)
NaN
> isNaN(obj)
true


따라서 NaN을 (x ! == x) 자신만의 isNaN 함수를 작성하여 위에서 언급한 문제가 없도록 합니다.


코드 복사 코드 function myIsNaN( x) {
return x !== x
}


현재 isNaN 메서드의 수정된 버전입니다. Number.isNaN()이 ECMAScript 6에 추가되었습니다(번역자 참고: Firefox에서 이미 구현했습니다). Crockford에서 구현한 이 메서드는 위의 myIsNaN보다 이해하기 쉽습니다.


코드 복사 코드는 다음과 같습니다. Number.isNaN = 함수(값) {
값 반환 유형 == = 'number' && isNaN(value)
};



2.Infinity

0을 제수로 사용하면 다른 값이 생성됩니다. 특수값 무한대:


무한대


양의 무한대나 음의 무한대만 추측할 수는 없습니다. 무한대의 계산 결과:


코드 복사 코드는 다음과 같습니다. >Infinity - Infinity
NaN


무한대보다 큰 값은 여전히 ​​무한대입니다.



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.