본문 바로가기

프로그래밍/[javascript] 자바스크립트

[javascript] 숫자 판별 함수 isNaN() 함수

by GenieIT* 2024. 11. 7.

728x90
728x90

 

1. 기본 구조

  • isNaN() 함수는 JavaScript에서 특정 값이 숫자인지 아닌지를 판단하는 데 사용됩니다.
  • isNaN() 함수는 주로 수학 연산이나 숫자 비교 전에 값이 유효한 숫자인지 확인할 때 유용합니다.

 


 

2. 문법

  • 매개변수 value는 숫자인지 확인하고 싶은 값입니다.
  • 반환 값은 true 또는 false입니다. ( true: 해당 값이 숫자가 아님, false: 해당 값이 유효한 숫자)
isNaN(value)

 


 

3. 기본 예제

  • isNaN()은 입력값을 숫자로 변환하려고 시도합니다. 만약 변환에 실패하면 true를 반환합니다.
isNaN(123);       // false (숫자이기 때문에)
isNaN("123");     // false ("123"은 숫자로 변환될 수 있기 때문에)
isNaN("ABC");     // true ("ABC"는 숫자로 변환될 수 없기 때문에)
isNaN(true);      // false (true는 1로 변환)
isNaN(undefined); // true (undefined는 숫자가 아님)

 


 

4. 주의 사항

  • 객체나 배열 같은 다른 데이터 타입은 숫자로 변환 시 NaN이 되기 때문에, isNaN()은 이를 모두 true로 처리합니다.
isNaN({});       // true
isNaN([1, 2, 3]); // true
isNaN([]);       // false (빈 배열은 숫자 0으로 간주됨)

 


 

5. isNaN() 함수와 Number.isNaN() 메서드의 차이점

  • Number.isNaN()은 isNaN()과 다르게 정확히 NaN인 경우에만 true를 반환합니다.
  • Number.isNaN()은 강제 변환을 수행하지 않고 값이 숫자 타입이면서 NaN인지 확인합니다.
Number.isNaN("ABC");    // false (문자열이 숫자로 변환되지 않기 때문에 NaN이 아님)
Number.isNaN(NaN);      // true
Number.isNaN(undefined); // false
Number.isNaN(0 / 0);       // true (0을 0으로 나누면 NaN이 됩니다)
Number.isNaN(Math.sqrt(-1)); // true (음수의 제곱근은 NaN이 됩니다)

 

  • 일반적으로 숫자로 변환되지 않는 값들을 확인하고 싶다면 isNaN()을, 값이 숫자 타입인지 확인하면서 NaN 여부만 체크하고 싶다면 Number.isNaN()을 사용하는 것이 좋습니다.
function checkIfNumber(value) {
  if (isNaN(value)) {
    console.log(value + "는 숫자가 아닙니다.");
  } else {
    console.log(value + "는 숫자입니다.");
  }
}

checkIfNumber("hello"); // "hello는 숫자가 아닙니다."
checkIfNumber("123");   // "123는 숫자입니다."
checkIfNumber(NaN);     // "NaN는 숫자가 아닙니다."

 

 

728x90