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

JavaScript isNaN() 함수 – NaN 판별 방법과 사용 예제

isNaN() 함수란?

JavaScript의 isNaN() 함수는 인수로 전달된 값이 NaN(Not-a-Number)인지 여부를 판별하는 전역 함수입니다. 값이 숫자로 변환될 수 없어 NaN이 되면 true를, 유효한 숫자라면 false를 반환합니다.

ES6부터는 암묵적인 타입 변환 없이 엄격하게 NaN만 검사하는 Number.isNaN() 메서드도 함께 제공되므로, 상황에 맞게 선택해서 사용할 수 있습니다.

문법(Syntax)

isNaN(5655);

검사하고자 하는 값을 인수로 전달하며, 위 예시처럼 숫자 리터럴을 직접 넘겨 테스트할 수도 있습니다.

예제

<html>
<head>
  <title>JavaScript Example</title>
</head>
<body>
  <script type="text/javascript">
    var result1 = parseFloat("Ef00A.D3");
    document.write(isNaN(result1));
    document.write('<br>');
    var result2 = Math.log("welcome");
    document.write(isNaN(result2));
    document.write('<br>');
    var result3 = Math.log(1254);
    document.write(isNaN(result3));
  </script>
</body>
</html>

실행 결과(Output)

true
true
false

결과 해설

  • parseFloat("Ef00A.D3") → 문자열이 숫자로 시작하지 않아 파싱에 실패하고 NaN을 반환하므로 true
  • Math.log("welcome") → 문자열을 숫자로 변환할 수 없어 연산 결과가 NaN이 되므로 true
  • Math.log(1254) → 유효한 숫자에 대한 로그 계산이므로 NaN이 아니어서 false

참고: isNaN()과 Number.isNaN()의 차이

전역 isNaN() 함수는 검사 전에 값을 숫자로 강제 변환하기 때문에 isNaN("hello")처럼 일반 문자열도 true로 판정될 수 있습니다. 반면 Number.isNaN()은 타입 변환 없이 값 자체가 NaN일 때만 true를 반환하므로, 보다 안전하고 정확한 검사가 필요하다면 Number.isNaN() 사용을 권장합니다.