판단 방법: 1. "value%1===0" 문을 사용합니다. 2. "Math.floor(value)===value" 문을 사용합니다. 3. "parseInt(value,10)==를 사용합니다. =value" ” 문; 4. "(value|0)===value" 문을 사용합니다. 5. "Number.isInteger(value)" 문을 사용합니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
JavaScript는 정수와 부동 소수점 숫자를 구분하지 않습니다. 모든 숫자는 내부적으로 Java의 double 유형과 동일한 64비트 부동 소수점 형식으로 표현됩니다. 그러나 배열 인덱싱, 비트 연산 등 실제 연산은 32비트 정수를 기반으로 합니다. 그렇다면 정수형(Integer)인지 어떻게 판단할 수 있을까요?
방법 1: 나머지 연산자를 사용하여
모든 정수는 1로 나눌 수 있습니다. 즉 나머지는 0입니다. 이 규칙을 사용하여 정수인지 여부를 확인합니다.
function isInteger(obj) { return obj%1 === 0 } isInteger(3) // true isInteger(3.3) // false
위 출력에서 볼 수 있듯이 이 함수는 매우 유용하지만 문자열 및 일부 특수 값에는 무력합니다.
isInteger('') // true isInteger('3') // true isInteger(true) // true isInteger([]) // true
빈 문자열, 문자열 유형 숫자, 부울 true 및 빈 배열에 대해 true를 반환합니다. 정말 어렵습니다. 이러한 유형의 내부 변환 세부 사항에 관심이 있는 경우 다음을 참조하세요. JavaScript의 이상한 거짓 값
따라서 먼저
function isInteger(obj) { return typeof obj === 'number' && obj%1 === 0 } isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
유형을 추가하는 등 개체가 숫자인지 여부를 확인해야 합니다. 이게 더 완벽해요.
방법 2: Math.floor를 사용하여
정수가 반올림 후에도 여전히 그 자체와 같은지 확인합니다. 이 기능을 사용하여 정수인지 확인합니다. Math.floor 예제는 다음과 같습니다.
function isInteger(obj) { return Math.floor(obj) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
이것은 문자열, true, []를 직접 마스킹하며 코드의 양은 이전 함수보다 적습니다.
방법 3. ParseInt로 판단하기
function isInteger(obj) { return parseInt(obj, 10) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
는 매우 좋지만,
isInteger(1000000000000000000000) // false
는 실제로 false를 반환하므로 불합리하다는 단점도 있습니다. 그 이유는parseInt가 정수를 구문 분석하기 전에 첫 번째 인수를 문자열로 구문 분석하도록 강제하기 때문입니다. 숫자를 정수로 변환하는 이 방법은 좋은 선택이 아닙니다.
방법 4. 비트 연산을 통한 판단
function isInteger(obj) { return (obj | 0) === obj } isInteger(3) // true isInteger(3.3) // false isInteger('') // false isInteger('3') // false isInteger(true) // false isInteger([]) // false
이 기능은 매우 훌륭하고 효율적입니다. 하지만 위에서 언급한 것처럼 비트 연산은 32비트 내의 숫자만 처리할 수 있고
isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
와 같은 32비트 이상의 숫자로는 아무것도 처리할 수 없습니다. 물론 대부분의 경우 우리는 그렇게 큰 숫자를 사용하지 않습니다.
방법 5. ES6은 Number.isInteger
Number.isInteger(3) // true Number.isInteger(3.1) // false Number.isInteger('') // false Number.isInteger('3') // false Number.isInteger(true) // false Number.isInteger([]) // false
를 제공합니다. 현재 최신 Firefox와 Chrome에서는 이미 이를 지원합니다.
참고: 이 다섯 가지 방법은 각각 장점과 단점이 있습니다. 신중하게 비교하고 가장 적합한 방법을 선택하세요.
【추천 학습: javascript 고급 튜토리얼】
위 내용은 자바스크립트에서 값이 정수인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!