Коротка відповідь
juniorNaN — це спеціальне число, яке не дорівнює собі. Перевіряємо через `Number.isNaN(value)` або `isNaN(value)` після приведення до числа. Приклад: `if (Number.isNaN(x)) console.log('x is NaN');`
Повне пояснення
Що це і навіщо NaN (Not a Number) – значення, яке виникає при невірних арифметичних операціях або некоректному приведенні типу. Перевірка потрібна, коли треба розрізнити «нечислове» значення від дійсного числа.
Ключові принципи/терміни
NaN– самостійне значення, яке не дорівнює собі:NaN === NaN→ false.Number.isNaN(value)– строгий спосіб перевірки, який повертає true лише коли аргумент самеNaN.isNaN(value)– глобальна функція, яка спочатку приводить аргумент до числа і потім перевіряє.
Як це працює
Number.isNaN(value) порівнює тип і значення без приведення. Якщо value не є числом, результат false.
Практика і реалізація (JS/TS)
const a = parseInt('abc'); // NaN
if (Number.isNaN(a)) {
console.log('a is NaN');
}
Тестування (Jest)
test('NaN check', () => {
expect(Number.isNaN(parseInt('x'))).toBe(true);
});
Оптимізація, типові помилки
- Не використовувати
=== NaN; це завжди false. - У випадку, коли значення може бути рядком, використовуйте
Number.isNaN(Number(value)).
Часті помилки
if (value == NaN)– false.Number.isNaN('foo')– false, бо тип не число.isNaN(undefined)– true, але це через приведення до числа.- Перевірка
value != value– працює, але не інформативна. - Використання
parseFloatбез перевірки результату. - Застосування
isNaNу колбеках без приведення типу. - Не врахування
-0у логіці. - Перевірка NaN в масивах без
Array.prototype.some.
Cheatsheet
Number.isNaN(x)– строгий.isNaN(x)– з приведенням.x !== x– альтернативний, але менш читабельний.