JavaScript의 숫자 유형을 판단하는 여러 가지 방법을 기록했습니다. 이 기사는 정수 유형 (정수)을 결정하는 방법을 보여줍니다.
JavaScript에서는 정수와 부동 소수점 번호가 구별되지 않습니다. 모든 숫자는 Java의 이중 유형과 동일한 64 비트 플로팅 포인트 형식으로 표시됩니다. 그러나 배열 인덱싱 및 비트 작업과 같은 실제 작업에서는 32 비트 정수를 기반으로합니다.
방법 1 : 나머지 연산자를 사용하여 판단하십시오
모든 정수는 1으로 나눌 수 있습니다. 즉, 나머지는 0입니다.이 규칙을 사용하여 정수인지 확인하십시오.
코드 사본은 다음과 같습니다.
함수 isinteger (obj) {
OBJ%1 === 0을 반환합니다
}
Isinteger (3) // true
Isinteger (3.3) // false
위의 출력은이 기능이 매우 유용하다는 것을 보여 주지만 문자열과 특수 값에 대해 무능한 것 같습니다.
코드 사본은 다음과 같습니다.
isinteger ( '') // true
Isinteger ( '3') // true
Isinteger (true) // true
isinteger ([]) // true
빈 문자열, 문자열 유형 번호, 부울 진짜 및 빈 배열이 모두 참전 사실을 받아들이는 것은 정말 어렵습니다. 이러한 유형의 내부 변환에 대한 세부 사항에 관심이 있으시면 다음을 참조하십시오. JavaScript의 이상한 가짜 값
따라서 먼저 타입을 추가하는 것과 같은 객체가 숫자인지 여부를 결정해야합니다.
코드 사본은 다음과 같습니다.
함수 isinteger (obj) {
OBJ === '번호'&& obj%1 === 0
}
isinteger ( '') // 거짓
isinteger ( '3') // 거짓
isinteger (true) // false
isinteger ([]) // false
글쎄, 이것은 더 완벽합니다.
2. Math.round, Math.ceil 및 Math.floor를 사용하여 판단을 내립니다
정수는 여전히 자신과 같습니다. 이 기능을 사용하여 정수인지 확인하십시오. 수학 예제는 다음과 같습니다
코드 사본은 다음과 같습니다.
함수 isinteger (obj) {
Return Math.floor (OBJ) === OBJ
}
Isinteger (3) // true
Isinteger (3.3) // false
isinteger ( '') // 거짓
isinteger ( '3') // 거짓
isinteger (true) // false
isinteger ([]) // false
이것은 문자열, true, []를 직접 차단하고 코드의 양은 이전 함수보다 작습니다.
3. Parseint를 통한 판단
코드 사본은 다음과 같습니다.
함수 isinteger (obj) {
parseint를 반환합니다 (obj, 10) === obj
}
Isinteger (3) // true
Isinteger (3.3) // false
isinteger ( '') // 거짓
isinteger ( '3') // 거짓
isinteger (true) // false
isinteger ([]) // false
매우 좋지만 단 하나도 단점이 있습니다
코드 사본은 다음과 같습니다.
ISINTEGER (100000000000000000000000) // false
그것은 실제로 거짓으로 되돌아 갔고, 불합리했습니다. 그 이유는 Parseint가 정수를 구문 분석하기 전에 첫 번째 매개 변수를 문자열로 구문 분석하기 때문입니다. 숫자를 정수로 변환하는이 방법은 좋은 선택이 아닙니다.
4. 비트 운영을 통한 판단
코드 사본은 다음과 같습니다.
함수 isinteger (obj) {
return (obj | 0) === obj
}
Isinteger (3) // true
Isinteger (3.3) // false
isinteger ( '') // 거짓
isinteger ( '3') // 거짓
isinteger (true) // false
isinteger ([]) // false
이 기능은 매우 우수하고 효율성이 높습니다. 그러나 결함이 있습니다. 위에서 언급했듯이 비트 작업은 32 비트 이내에 만 처리 할 수 있으며
코드 사본은 다음과 같습니다.
isinteger (math.pow (2, 32)) // 32 자리 이상의 숫자가 거짓으로 반환되었습니다.
물론 대부분의 경우 우리는 그러한 숫자를 많이 사용하지 않습니다.
5. ES6은 숫자를 제공합니다
코드 사본은 다음과 같습니다.
번호 .Isinteger (3) // true
번호 .isinteger (3.1) // false
번호 .isinteger ( '') // false
번호 .isinteger ( '3') // false
번호 .isinteger (true) // false
번호 .isinteger ([]) // false
현재 최신 Firefox 및 Chrome은 이미 지원되었습니다.