세계 에서 가장 짧 은 숫자 판단 코드
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.