NATIVE

settings_applicationsGlobal

NATIVE

Editing
  • account_tree
  • bug_report

numberNaN

숫자가 아님(Not a number)을 의미하는 값이다.

설명

NaN은 전역 스코프(scope)에서 사용 가능한 읽기 전용 값이다. 숫자가 아님을 의미하는 영문 'Not a number' 에서 각 알파벳 첫 글자로 만든 이름이다.

한 가지 혼란스러운 사실은 동일한 NaN은 서로 같지 않다라는 것입니다. typeof 연산자로 확인하면 'number' 로 원시 유형임을 확인할 수 있다. 같은 원시 유형인 undefined를 자신과 비교 했을 때 true라는 사실에서 이례적이다. 이러한 이유로 NaN을 특별한 객체 유형으로 보는 경향도 있다.

typeof NaN // 'number'
NaN === NaN // false

이 결과를 바탕으로 사용자로부터 숫자를 입력받아 계산에 사용되는 로직에 활용할 수 있다. 즉, 일반 문자를 포함하여 입력 필드에 값이 입력 되었는가를 확인한 후 입력된 값을 Number() 생성자 함수를 이용해서 숫자로 형 변환을 한다. Number() 함수는 인수로 전달받은 값이 숫자가 아닌 경우에 NaN을 반환하는 데 반환된 값을 자신과 비교하여 같은 경우에는 숫자가 맞는 것이고 같지 않을 경우에는 NaN 즉, 숫자가 아닌 일반 문자열을 입력받은 것이라 할 수 있다.

다음 예제 코드를 참고하자.

var num = document.getElementById("myNum").value;
// 기본적인 값을 체크
if (!num) {
    alert("숫자를 입력해 주세요.");
    return;
}

// 설정된 값을 number로 형 변환하며 number가 아닌 경우에는 NaN을 반환
num = Number(num);
// NaN은 자신과 타입까지 비교했을 경우에 결과는 false이다.
if (num !== num) {
    alert("숫자만 입력해 주세요.");
    return;
}

속성 명세

명세
분류설명
Configurableno
Enumerableno
Writableno

버전 명세

지원 웹브라우저