따라서 문자열을 잠재적 인 정수로 캐스트 하시겠습니까?
이것은 할 것이다 :
function isInt(value) {
return !isNaN(value) &&
parseInt(Number(value)) == value &&
!isNaN(parseInt(value, 10));
}
비트 단위 연산
간단한 파싱 및 확인
function isInt(value) {
var x = parseFloat(value);
return !isNaN(value) && (x | 0) === x;
}
단락 및 구문 분석 작업 저장 :
function isInt(value) {
if (isNaN(value)) {
return false;
}
var x = parseFloat(value);
return (x | 0) === x;
}
또는 한 번에 두 가지 모두 가능합니다.
function isInt(value) {
return !isNaN(value) && (function(x) { return (x | 0) === x; })(parseFloat(value))
}
테스트 :
isInt(42) // true
isInt("42") // true
isInt(4e2) // true
isInt("4e2") // true
isInt(" 1 ") // true
isInt("") // false
isInt(" ") // false
isInt(42.1) // false
isInt("1a") // false
isInt("4e2a") // false
isInt(null) // false
isInt(undefined) // false
isInt(NaN) // false
바이올린은 다음과 같습니다. http://jsfiddle.net/opfyrqwp/28/
공연
테스트 결과 단락 솔루션의 성능이 최고 (ops / sec) 인 것으로 나타났습니다.
// Short-circuiting, and saving a parse operation
function isInt(value) {
var x;
if (isNaN(value)) {
return false;
}
x = parseFloat(value);
return (x | 0) === x;
}
벤치 마크는 다음과 같습니다.
http://jsben.ch/#/htLVw
더 짧고 둔감 한 형태의 단락을 상상한다면 :
function isInt(value) {
var x;
return isNaN(value) ? !1 : (x = parseFloat(value), (0 | x) === x);
}
물론, 나는 축소 장치가 그것을 처리하게하는 것이 좋습니다.
parseInt
입니다.