NaN

IT공부중·2021년 2월 10일
0

JavsScript

목록 보기
15/22
post-custom-banner

NaN은 Not A Number(숫자가 아님)를 나타낸다.

NaN을 반환하는 연산에는 5가지 종류가 있다.

  1. 숫자로써 읽을 수 없음.(parseInt('문자열'), Number(undefined)
  2. 결과가 허수인 계산식 (Math.sqrt(-1))
  3. 피연산자가 NaN (7 ** NaN)
  4. 정의할 수 없는 계산식 (0 * Infinity)
  5. 문자열을 포함하면서 덧셈이 아닌 계산식("가" / 3 )

(더하면 "가3"이 될 것이다.)

NaN의 판별

NaN은 다른 모든 값과 비교 했을 때 같지 않고, 다른 NaN 그리고 자기 자신과도 같지 않다. NaN의 판별은 Number.isNaN() 또는 isNaN()을 사용하면 제일 분명하게 수행할 수 있다.

NaN === NaN; // false
isNaN(NaN); // true
Number.isNaN(NaN); // true

또는 자기 자신과 비교했을 때 다른지를 비교하는 함수를 만들어 NaN을 판단할 수도 있다. 자기 자신과 비교했을 때 같지 않은 것은 NaN 뿐이다.

function checkNaN(value) {
	return value !== value;
} // true를 반환 한다면 NaN이다.

checkNaN(1); // false
checkNaN(NaN); // true
checkNaN(Number.NaN); // true

isNaN() 과 Number.isNaN()의 차이

isNaN은 현재 값이 NaN이거나 숫자로 변환했을 때 NaN이 되면 참을 반환하지만, Number.isNaN은 현재 값이 NaN이어야만 참을 반환한다.

isNaN('테스트'); // 숫자로 변환 할 때 NaN이니 true
Number.isNaN('테스트'); // 현재 값이 NaN이 아니니 false

또한, 배열 메서드의 includes로는 NaN을 찾을 수 있지만, indexOf 로는 찾을 수 없는 등의 상황도 있으니 주의할 것.

참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/NaN

profile
4년차 프론트엔드 개발자 문건우입니다.
post-custom-banner

0개의 댓글