JavaScript - 숫자가 NaN 인지 확인하는 방법

숫자가 NaN인지 확인하는 방법을 소개합니다.

NaN은 Not a Number로, 잘못된 숫자를 의미합니다. 예를 들어, 아래와 같이 잘못된 연산의 결과는 NaN을 리턴합니다.

let n1 = 0 / 0;
let n2 = 10 / 'a';

console.log(n1);  // NaN
console.log(n2);  // NaN

1. Number.isNaN()으로 NaN 인지 확인

Number.isNaN()는 인자로 전달된 변수가 Number 타입이고 NaN이면 true를 리턴합니다. 이외에는 모두 false를 리턴합니다.

let num = 0 / 0;

if (Number.isNaN(num)) {
  console.log('num is NaN');
}

예를 들어, Number 타입이 아닌 변수에 대해서 NaN을 체크하면 아래와 같이 false가 리턴됩니다.

console.log(Number.isNaN('string'));  // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false
console.log(Number.isNaN([]));        // false
console.log(Number.isNaN({}));        // false

2. isNaN()으로 NaN 인지 확인

isNaN()도 아래와 같이 인자로 전달된 변수가 NaN인지 확인할 수 있습니다.

let num = 0 / 0;

if (isNaN(num)) {
  console.log('num is NaN');
}

그런데 문제는, number가 아닌 다른 타입을 체크할 때도 true가 리턴될 수 있습니다. 따라서 isNaN()는 사용하지 말고 Number.isNaN()를 사용해야 합니다.

console.log(isNaN(0 / 0));     // true
console.log(isNaN('string'));  // true
console.log(isNaN(undefined)); // true
console.log(isNaN({}));        // true
console.log(isNaN(null));      // false
console.log(isNaN([]));        // false

3. Number.NaN === Number.NaN 표현 사용하지 않기

===를 사용하여 NaN을 NaN과 비교하는 표현은 사용해서는 안됩니다. 자바스크립트에서 NaN은 NaN과 같지 않다고 판단되어 false를 리턴합니다.

console.log(Number.NaN === Number.NaN);   // false
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha