본문 바로가기

■ 프로그래밍/JavaScript

isNaN()

NaN(Not a Number)으로 isNaN() 함수는 말그대로 어떤 값이 NaN 인지 아닌지 판단할 때 사용된다.

true를 반환하면 숫자가 아니고, false를 반환하면 숫자이다.

하지만 특수한 규칙이 존재하기 때문에 사용하면서 '이게 왜 안되지?' 혹은 '이게 왜 되지?' 같은 경우가 있었다. 

 

자바스크립트에서 NaN은 연산(==, ===)으로 판별할 수 없어 isNaN 함수가 필요하다. 

우선 기본적인 데이터 타입으로 isNaN을 실행해 보겠다. 

isNaN(5); // output: true
isNaN("hello"); // output: false
isNaN([3]); // output: false
isNaN(true); // output: false // true는 1
isNaN(false); // output: false // false는 0
isNaN(NaN); // output: true

 

하지만 예기치 못한 결과값도 있다. 

isNaN(undefined); // output: true
isNaN(null); // output: false

undefined는 선언되지 않은 것이기 때문에 숫자가 아닌 것으로 출력된다. 하지만 null은 숫자가 맞다고 출력된다. 

이는 isNaN() 함수가 괄호 안의 값을 먼저 숫자로 변환하여 시도한다. 

Number(null); // output: 0
isNaN(Number(null)); // output: false

null을 Number로 감쌀 경우 0을 출력하기 때문에 컴퓨터는 이를 Number로 인식한다. 

 

 

isNaN() 결과가 의아하다면 Number로 먼저 실행한 다음 어떤 값이 출력되는지 확인하는 습관을 키우면 될 것 같다. 

'■ 프로그래밍 > JavaScript' 카테고리의 다른 글

Object (2) - 중첩객체 접근  (0) 2020.03.26
Object (1) - 접근, 할당  (0) 2020.03.25
isNaN()  (0) 2020.03.25
String, Number 변환  (0) 2020.03.24
배열의 반복 (3) - findIndex()  (0) 2020.03.16
배열의 반복 (2) - map(), filter()  (0) 2020.03.15