세계 에서 가장 짧 은 숫자 판단 코드

2424 단어
우 리 는 자바 스 크 립 트 가 type: of 연산 자 를 제공 한 다 는 것 을 알 고 있 기 때문에 type: of 로 number 형식 인지 아 닌 지 를 판단 하기 쉽다.
function isNumber(obj) {
    return typeof obj === 'number'
}

 이 함 수 는 정수 와 부동 소수점 에 문제 가 없 지만 NaN 값 도 true 로 돌아 가 는 것 이 불쾌 합 니 다. 왜냐하면 isNumber 로 판단 하여 통과 한 후에 누구 도 NaN 으로 산술 연산 을 하지 않 을 것 입 니 다.
 
그럼 개선 해 보 세 요. Object. prototype. toString 으로 해 보 세 요.
function isNumber(obj) {
    return Object.prototype.toString.call(obj) === '[object Number]'
}

type: of 판단 과 마찬가지 로 NaN 에 대해 서도 true 로 되 돌아 가 고 코드 의 양 이 많아 지 는 것 은 원 하 는 결과 가 아 닙 니 다.toString. call 방식 으로 배열 (Array) 이 가능 하 다 고 판단 하면 숫자 는 힘 에 부친 다.
 
다시 개선 하면 NaN 값 은 isNaN 함수 로 대응 합 니 다.
function isNumber(obj) {
    return typeof obj === 'number' && !isNaN(obj)
}

이번에 들 어 온 시비 숫자 (NaN 또는 NaN 으로 변환 가능 한 값) 는 false 로 돌아 갑 니 다.
function isNumber(obj) {
    return typeof obj === 'number' && !isNaN(obj)
}
isNumber(1)   // true
isNumber(1.2) // true
isNumber(NaN) // false
isNumber( parseInt('a') ) // false

응, 이 isNumber 는 괜 찮 은 데, 또 하나의 등가 가 있어, isFinite 로 판단 해.
function isNumber(obj) {
    return typeof obj === 'number' && isFinite(obj)   
}

지금까지 가장 짧 은 코드 의 숫자 판단 은 이 글 에서 언급 한 세 번 째 isNaN 함 수 를 사용 한 것 이다.세계 에서 가장 짧 은 디지털 판단 코드 를 성대하게 내 놓 겠 습 니 다.
function isNumber(obj) {
    return obj === +obj
}

정수 에 대해 서 는 부동 소수점 이 true 로 되 돌아 가 고, NaN 이나 NaN 으로 전 환 될 수 있 는 값 은 false 로 되 돌아 갑 니 다.
 
못 알 아 봤 다 고요?╯ ~ (╯ ﹏ ╰)
원 우 는 이것 이 세계 에서 가장 짧 은 판단 디지털 코드 가 아니 라 매개 변수 obj 는 문자 로 바 꿀 수 있다 고 말 했다.(⊙ o ⊙) 네가 옳다.
 
하 나 를 보면 열 을 안다. JS 동적 언어 특성 (연산 자 연산 시 내부 자동 유형 변환) 을 이용 한 가장 짧 은 판단 은 다음 과 같다.
//      
function isString(obj) {
    return obj === obj+''
}
//       
function isBoolean(obj) {
    return obj === !!obj
}

 
 
관련:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite
 
 
 

좋은 웹페이지 즐겨찾기