Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 숫자가 NaN인지 확인하는 방법

NaN(Not-a-Number)은 JavaScript의 전역 속성으로, '숫자가 아님'을 나타내는 특수한 값입니다. 어떤 연산 결과가 유효한 숫자가 아닐 때 이 값이 반환되며, 예를 들어 0 / 0이나 parseInt("abc") 같은 잘못된 숫자 연산의 결과가 NaN이 됩니다.

NaN 기본 문법

Number.NaN

NaN 여부 확인 방법

값이 NaN인지 판별하려면 Number.isNaN() 메서드 또는 전역 함수인 isNaN()을 사용하면 됩니다.

  • isNaN(): 전역 함수로, 전달된 값을 숫자로 강제 변환한 뒤 NaN인지 검사합니다. 따라서 빈 문자열('')이나 false처럼 숫자로 변환 가능한 값은 false를 반환합니다.
  • Number.isNaN(): ES6에서 도입된 메서드로, 타입 변환 없이 해당 값이 정확히 NaN일 때만 true를 반환하기 때문에 더 안전하고 엄격한 판별이 가능합니다.

예제 코드

아래는 isNaN() 함수를 사용해 다양한 값에 대해 NaN 여부를 확인하는 예제입니다. 버튼을 클릭하면 각 값의 검사 결과가 화면에 표시됩니다.

<!DOCTYPE html>
<html>
   <body>
      <button onclick="display()">Check</button>
      <p id="test"></p>
      <script>
         function display() {
            var a = "";
            a = a + isNaN(434) + ": 434<br>";
            a = a + isNaN(-23.1) + ": -23.1<br>";
            a = a + isNaN('Hello') + ": 'Hello'<br>";
            a = a + isNaN(NaN) + ": NaN<br>";
            a = a + isNaN('') + ": ''<br>";
            a = a + isNaN(0) + ": 0<br>";
            a = a + isNaN(false) + ": false<br>";

            document.getElementById("test").innerHTML = a;
         }
      </script>
   </body>
</html>

실행 결과

false: 434
false: -23.1
true: 'Hello'
true: NaN
false: ''
false: 0
false: false

결과 해석

위 실행 결과를 보면 다음과 같은 특징을 알 수 있습니다.

  • 434, -23.1, 0은 정상적인 숫자이므로 false가 반환됩니다.
  • 'Hello'는 숫자로 변환할 수 없어 true가 반환됩니다.
  • NaN은 당연히 true입니다.
  • 빈 문자열('')과 false는 숫자로 변환되면 각각 0이 되기 때문에 false가 반환됩니다. 이것이 isNaN()의 암묵적 타입 변환 때문에 발생하는 주의할 점입니다.

따라서 타입 변환으로 인한 오류를 피하고 싶다면 Number.isNaN()을 사용하는 것이 권장됩니다. 예를 들어 Number.isNaN('')false를 반환하지만, 문자열 자체가 NaN이 아니므로 더 직관적인 결과를 제공합니다.