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(value)
};
2.Infinity
0을 제수로 사용하면 다른 값이 생성됩니다. 특수값 무한대:
무한대
양의 무한대나 음의 무한대만 추측할 수는 없습니다. 무한대의 계산 결과:
NaN
무한대보다 큰 값은 여전히 무한대입니다.