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을 반환하므로 trueMath.log("welcome")→ 문자열을 숫자로 변환할 수 없어 연산 결과가 NaN이 되므로 trueMath.log(1254)→ 유효한 숫자에 대한 로그 계산이므로 NaN이 아니어서 false
참고: isNaN()과 Number.isNaN()의 차이
전역 isNaN() 함수는 검사 전에 값을 숫자로 강제 변환하기 때문에 isNaN("hello")처럼 일반 문자열도 true로 판정될 수 있습니다. 반면 Number.isNaN()은 타입 변환 없이 값 자체가 NaN일 때만 true를 반환하므로, 보다 안전하고 정확한 검사가 필요하다면 Number.isNaN() 사용을 권장합니다.