자바 스크립트가 내장 된 때는 isNaN의 기능이다 - 기본적으로 예상해야으로 -는 "동적 타입 연산자". 따라서 (DTC 프로세스 중) 모든 값은 단순한 참 | 와 같은 false "", " ", " 000"
는 NaN 일 수 없습니다.
것을 의미 인수 공급 먼저 받게 될 것이다 변환을 같이 :
function isNaNDemo(arg){
var x = new Number(arg).valueOf();
return x != x;
}
설명:
함수 본문의 맨 윗줄에서, 먼저 인수를 숫자 객체로 변환하려고합니다. 그리고 둘째, 도트 연산자를 사용하여 우리 자신의 편의 를 위해 생성 된 객체 의 기본 값 을 즉시 제거 합니다.
두 번째 줄에서 우리는 이전 단계에서 얻은 가치와 NaN 이 우주의 어떤 것과도 같지 않다는 사실의 장점을 취합니다 .NaN == NaN >> false
마지막으로 (불평등에 대한) 비교에 자체 .
이 방법으로, 제공된 인수 반환이 숫자 객체, 즉 숫자가 아닌 숫자로의 변환에 실패한 경우에만 함수 리턴이 참이 됩니다. 예를 들어, NaN.
isNaNstatic ()
그러나 정적 유형 연산자의 경우 (필요한 경우) 필요한 경우 다음과 같이 훨씬 간단한 함수를 작성할 수 있습니다.
function isNaNstatic(x){
return x != x;
}
그리고 인수가 명시 적으로 NaN 숫자가 아닌 경우 거짓을 반환하도록 DTC를 모두 피하십시오. 따라서 다음에 대해 테스트하십시오.
isNaNStatic(" x"); // will return false
여전히 문자열이기 때문에.
그러나 :
isNaNStatic(1/"x"); // will of course return true.
예를 들어isNaNStatic(NaN); >> true
.
그러나 (반박)이 일반 문자열이기 때문에 isNaN
와 반대로 isNaNStatic("NaN"); >> false
.
ps : isNaN의 정적 버전은 최신 코딩 시나리오에서 매우 유용 할 수 있습니다. 그리고 내가 이것을 게시하는 데 시간이 걸린 주요 이유 중 하나 일 수 있습니다.
문안 인사.