본문 바로가기

언어/Javascript

[ 자바스크립트 / JavaScript ] Number.isFinite() 사용하기

반응형

Number.isFinite() 메서드는 주어진 값이 유한한 숫자인지 판별하는 데 사용됩니다. Number.isFinite()는 값이 숫자이고 유한한 값일 때만 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 이 메서드는 NaN, Infinity, -Infinity와 같은 무한대 값을 제외하고 모든 숫자에 대해 true를 반환합니다.

1. Number.isFinite() 메서드의 구문

Number.isFinite(value)
  • value: 검사할 값.

2. 반환 값

  • true: 값이 유한한 숫자인 경우.
  • false: 값이 유한하지 않거나 숫자가 아닌 경우.

3. 예제

다양한 값에 대해 Number.isFinite()를 사용하여 결과를 확인해보겠습니다.

1. 기본 사용 예제

console.log(Number.isFinite(25));        // true: 25는 유한한 숫자
console.log(Number.isFinite(-25));       // true: -25는 유한한 숫자
console.log(Number.isFinite(0));         // true: 0은 유한한 숫자
console.log(Number.isFinite(3.14));      // true: 3.14는 유한한 숫자
console.log(Number.isFinite(Infinity));  // false: Infinity는 무한대
console.log(Number.isFinite(-Infinity)); // false: -Infinity는 무한대
console.log(Number.isFinite(NaN));       // false: NaN은 숫자가 아님
console.log(Number.isFinite('42'));      // false: '42'는 문자열
console.log(Number.isFinite(true));      // false: true는 숫자가 아님

2. 다양한 데이터 타입에 대한 예제

// 정수 및 부동 소수점 숫자
console.log(Number.isFinite(100));        // true
console.log(Number.isFinite(-100.123));   // true

// 문자열
console.log(Number.isFinite('100'));      // false: 문자열
console.log(Number.isFinite('hello'));    // false: 문자열

// 불리언
console.log(Number.isFinite(true));       // false
console.log(Number.isFinite(false));      // false

// 객체
console.log(Number.isFinite({}));         // false
console.log(Number.isFinite([]));         // false

// 특수 값
console.log(Number.isFinite(Infinity));   // false
console.log(Number.isFinite(-Infinity));  // false
console.log(Number.isFinite(NaN));        // false

4. Number.isFinite() vs isFinite()

JavaScript에는 Number.isFinite()와 비슷한 이름을 가진 전역 함수 isFinite()도 있습니다. 그러나 이 두 함수는 약간 다르게 동작합니다.

  • Number.isFinite(): 전달된 값이 숫자가 아니면 무조건 false를 반환합니다. 타입 변환을 수행하지 않습니다.
  • isFinite(): 전달된 값이 숫자로 변환 가능한 경우, 타입 변환 후 유한한 숫자인지 여부를 판단합니다.

1. 비교 예제

console.log(Number.isFinite('123')); // false: '123'은 문자열
console.log(isFinite('123'));        // true: '123'은 숫자로 변환 가능하므로 true

console.log(Number.isFinite('abc')); // false: 'abc'는 숫자로 변환할 수 없음
console.log(isFinite('abc'));        // false: 'abc'는 숫자로 변환할 수 없음

console.log(Number.isFinite(null));  // false: null은 숫자가 아님
console.log(isFinite(null));         // true: null은 0으로 변환 가능하므로 true

5. 실용적인 예제

Number.isFinite()를 사용하여 배열에서 유한한 숫자만 필터링하는 예제입니다.

let mixedArray = [10, 20, '30', null, Infinity, NaN, 'hello', 40];

let finiteNumbers = mixedArray.filter(Number.isFinite);
console.log(finiteNumbers);  // 출력: [10, 20, 40]

이 예제에서 Number.isFinite 메서드를 Array.prototype.filter()와 함께 사용하여 배열에서 유한한 숫자만 필터링합니다.

6. 요약

  • Number.isFinite()는 주어진 값이 유한한 숫자인지 여부를 검사합니다.
  • 값이 숫자 타입이 아니거나 무한대(Infinity, -Infinity) 또는 NaN인 경우 false를 반환합니다.
  • 타입 변환을 수행하지 않기 때문에, Number.isFinite()는 숫자 타입이 아닌 경우에도 false를 반환합니다.
  • isFinite()Number.isFinite()와 달리, 타입 변환 후 유한한 숫자인지 여부를 판단합니다.

Number.isFinite()는 주어진 값이 유한한 숫자인지 안전하게 검사할 수 있는 도구로, 숫자와 관련된 오류를 방지하는 데 유용합니다.

반응형