NaN은 Not a Number의 줄임말로, 숫자가 아님을 나타내는 특수한 숫자 값입니다. JavaScript에서 연산 결과가 숫자가 아니거나 계산할 수 없는 경우 NaN이 반환됩니다. NaN은 숫자형(Number Type)에 속하지만, 그 값 자체는 유효한 숫자가 아님을 의미합니다.
NaN의 특징
NaN은 typeof 연산자로 확인하면 number로 반환됩니다.
NaN은 자기 자신과도 같지 않은 유일한 값입니다. 즉, NaN === NaN은 항상 false를 반환합니다.
console.log(typeof NaN); // number
console.log(NaN === NaN); // false
NaN이 발생하는 경우
- 숫자가 아닌 문자열을 수치 연산에 사용한 경우
- 잘못된 수학 연산
- parseInt 또는 parseFloat 사용 시 숫자로 변환할 수 없는 경우
- 0을 0으로 나누는 경우
console.log("hello" * 5); // NaN
console.log(Math.sqrt(-1)); // NaN : 음수의 제곱근은 실수 범위에서 정의되지 않으므로 NaN을 반환
console.log(parseInt("abc123")); // NaN
console.log(0 / 0); // NaN
isNaN() 함수
isNaN() 함수는 주어진 값이 NaN인지 여부를 확인합니다. 하지만 isNaN() 함수는 숫자가 아닌 값이 들어오면 자동으로 숫자로 변환하려 하기 때문에 오작동 할 수 있습니다. 이를 보완하기 위해 ES6부터는 Number.isNaN()을 사용하는 것이 권장됩니다.
console.log(isNaN(100)); // false (100은 숫자)
console.log(isNaN(NaN)); // true (NaN은 숫자가 아님)
console.log(isNaN("Hello")); // true (숫자로 변환 할 수 없음)
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("Hello")); // false (숫자로 변환하지 않음)
NaN의 비교
NaN은 자신과도 같지 않기 때문에 비교 연산을 통해 직접 NaN을 확인하는 것은 불가능합니다.
따라서 Number.isNaN()이나 isNaN() 함수를 사용하여 NaN을 확인해야 합니다.
const value = NaN;
console.log(value === NaN); // false;
console.log(isNaN(value)); // true;
NaN은 JavaScript에서 연산 결과가 숫자가 아닌 경우에 반환되는 특수한 숫자형 값입니다. NaN 자체는 유효한 숫자형이지만, 실제 계산에 사용할 수 없는 값이라는 의미를 가집니다. 따라서 NaN을 처리할 때는 Number.isNaN() 등을 사용하여 안전하게 확인하고, 잘못된 입력이나 계산 오류를 방지하는 로직을 작성하는 것이 중요합니다.
'개발 지식 한스푼' 카테고리의 다른 글
JavaScript _ 바닐라 JS란? (0) | 2025.01.15 |
---|---|
JavaScript _ list 와 array (0) | 2025.01.12 |
JavaScript _ 데이터 타입 number, string, boolean (0) | 2025.01.10 |
JavaScript _ null 과 undefined (0) | 2025.01.09 |
JavaScript _ 변수 var, let, const (0) | 2025.01.08 |