isFinite 함수
isFinite 함수는 매개변수가 유한한 숫자인지(즉, 문자열, 배열 등이 아니고 양의 무한대 또는 음의 무한대가 아닌지) 확인합니다.
이 함수의 작동 방식: 숫자가 양의 무한대 또는 음의 무한대(즉, Infinity)이거나 숫자가 아닌 경우(즉, NaN) false를 반환하고, 다른 모든 경우에는 true를 반환합니다.
즉, 문자열, 배열 등은 NaN으로 변환되어 false를 반환합니다.
그러나 예외가 있습니다: 빈 문자열 ''는 true를 반환하고, 공백으로 구성된 문자열 ' '도 true를 반환하며, null는 true를 반환하고, true 및 false 값에 대해서도 true가 반환됩니다.
이는 이러한 값들이 NaN이 아닌 숫자로 변환되기 때문입니다.
공백 문자열, 논리 값 및 특수 값을 숫자로 간주하지 않는 정확한 숫자 확인이 필요하다면 다음 isNumeric 함수를 사용하세요:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
이 함수가 어떻게 작동하는지 알아봅시다.
isFinite 함수는 매개변수를 숫자로 변환하고, Infinity, -Infinity 또는 NaN가 아니면 true를 반환합니다.
따라서 오른쪽 부분은 분명히 숫자가 아닌 것들을 걸러내지만, true, false, null, 빈 문자열 '' 및 공백 문자열과 같은 값들은 숫자로 올바르게 변환되므로 남깁니다.
이러한 값들을 걸러내려면 parseFloat 함수가 필요합니다. 이 함수는 true, false, null, '', ' '에 대해 NaN를 반환합니다. parseFloat 함수는 매개변수를 문자열로 변환하는 방식으로 작동합니다. 즉, true, false, null는 'true', 'false', 'null'가 되고, 그런 다음 문자열에서 숫자를 읽어냅니다. 이때 빈 문자열과 공백 문자열은 NaN를 생성합니다. 그런 다음 parseFloat의 결과는 !isNaN을 사용하여 NaN 대신 true 또는 false를 얻도록 처리됩니다. 결과적으로 숫자 문자열과 일반 숫자를 제외한 모든 것이 걸러집니다.
구문
isFinite(값);
예제
매개변수가 숫자이므로 지금 isFinite는 true를 출력합니다:
let num = 3;
console.log(isFinite(num));
코드 실행 결과:
true
예제
매개변수가 숫자가 아니므로 지금 isFinite는 false를 출력합니다:
let num = 'abcde';
console.log(isFinite(num));
코드 실행 결과:
false
예제
매개변수가 무한대이므로 지금 isFinite는 false를 출력합니다:
let num = Infinity;
console.log(isFinite(num));
코드 실행 결과:
false
예제
1/0는 본질적으로 Infinity(무한대)이므로 지금 isFinite는 false를 출력합니다:
let num = 1 / 0;
console.log(isFinite(num));
코드 실행 결과:
false
예제
숫자가 아닌 빈 문자열은 예외이므로 지금 isFinite는 true를 출력합니다:
let num = '';
console.log(isFinite(num));
코드 실행 결과:
true