NaN 속성이란 무엇인가?
자바스크립트에서 Number.NaN은 'Not-a-Number(숫자가 아님)'를 나타내는 특수한 값입니다. 따옴표로 감싸지 않은 리터럴 상수인 NaN은 숫자가 아닌 값을 표현할 때 사용됩니다.
NaN의 가장 중요한 특징은 어떤 값과도 같지 않다는 점입니다. 심지어 자기 자신(NaN)과 비교해도 같다고 판정되지 않습니다. 이러한 특성 때문에 NaN은 주로 유효한 숫자를 반환해야 하는 함수에서 오류 상황을 표시하는 용도로 활용됩니다.
NaN의 핵심 특징
- 숫자가 아닌 값(Not-a-Number)을 나타내는 특수한 값입니다.
- NaN은 어떤 숫자와 비교해도 항상 같지 않음(false)을 반환합니다.
- NaN === NaN 조차 false이므로, NaN 여부를 확인하려면
isNaN()함수나Number.isNaN()메서드를 사용해야 합니다.
NaN 활용 예제
아래 예제를 직접 실행해 보면 NaN 속성의 사용 방법을 쉽게 이해할 수 있습니다. 이 코드는 날짜(dayOfMonth) 값이 유효 범위(1~31)를 벗어날 경우 해당 값을 NaN으로 설정하고 사용자에게 경고 메시지를 표시합니다.
<html>
<head>
<script>
function showValue() {
var dayOfMonth = 50;
if (dayOfMonth < 1 || dayOfMonth > 31) {
dayOfMonth = Number.NaN
alert("Day of Month must be between 1 and 31.")
}
Document.write("Value of dayOfMonth : " + dayOfMonth );
}
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="showValue();" />
</form>
</body>
</html>코드 동작 방식 설명
- 변수
dayOfMonth에 50이라는 값을 할당합니다. - 조건문에서 값이 1보다 작거나 31보다 큰지 검사합니다.
- 유효 범위를 벗어났으므로
dayOfMonth를Number.NaN으로 설정합니다. - alert()을 통해 "날짜는 반드시 1에서 31 사이여야 합니다"라는 경고를 사용자에게 보여줍니다.
이처럼 NaN은 잘못된 입력값이나 계산 불가능한 결과를 명확하게 표현하는 데 유용하며, 데이터 유효성 검사 로직을 작성할 때 자주 활용됩니다.