JavaScript가 typeof 연산자를 제공한다는 것을 알고 있으므로 가장 쉽게 생각할 수 있는 것은 typeof를 사용하여 숫자 유형인지 확인하는 것입니다.
다음과 같이 코드를 복사합니다.
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]' }
이번에는 입력이 숫자가 아닌 경우(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를 한 문자로 변경할 수 있다고 말했습니다. (ㅇㅇㅇ) 당신 말이 맞아요.
유추하자면 JS 동적 언어 기능(연산자 작업 중 자동 내부 유형 변환)을 사용한 유사한 최단 판단이 있습니다.
다음과 같이 코드를 복사하세요.
// 判断字符串 function isString(obj) { return obj === obj+'' } // 判断布尔类型 function isBoolean(obj) { return obj === !!obj }