NaN은 JavaScript에서 "Not-a-Number", 즉 숫자가 아닌 값을 나타내는 전역 속성입니다. 어떤 연산 결과가 유효한 숫자가 아닐 때 반환되는 특수한 값으로, 이는 해당 값이 정상적인 숫자가 아니라는 것을 의미합니다.
예를 들어 0/0처럼 수학적으로 정의되지 않는 연산이나, parseInt("abc")처럼 문자열을 숫자로 변환하는 데 실패한 경우 NaN이 반환됩니다.
문법(Syntax)
NaN의 기본 문법은 다음과 같습니다.
Number.NaN
NaN 확인 방법
어떤 값이 NaN인지 판별하려면 Number.isNaN() 메서드 또는 전역 함수인 isNaN()을 사용합니다. 두 메서드의 차이점은 다음과 같습니다.
- isNaN(): 값을 숫자로 강제 변환한 뒤 NaN 여부를 검사합니다. 예를 들어 빈 문자열('')이나 false는 숫자로 변환되면 0이 되므로 false를 반환합니다.
- Number.isNaN(): 타입 변환 없이 값이 정확히 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(6234) + ": 6234<br>";
a = a + isNaN(-52.1) + ": -52.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: 6234 false: -52.1 true: 'Hello' true: NaN false: '' false: 0 false: false
NaN의 특징
NaN에는 한 가지 중요한 특징이 있습니다. 바로 자기 자신과도 같지 않다는 점입니다. 즉, NaN === NaN은 false를 반환합니다. 따라서 동등 비교 연산자(==, ===)로는 NaN을 판별할 수 없으며, 반드시 Number.isNaN() 또는 isNaN()을 사용해야 합니다.