Что такое свойство NaN?nodejs-79

NaN (Not-A-Number) — это специальное значение в JavaScript, которое представляет результат математической операции, которая не может быть выполнена или возвращает неопределённое числовое значение.

Основные характеристики NaN:

  1. Тип данных:
console.log(typeof NaN); // "number"
  • Несмотря на название "Not-A-Number", технически NaN является числовым значением (тип number)
  1. Сравнение с самим собой:
console.log(NaN === NaN); // false
  • NaN — единственное значение в JavaScript, которое не равно самому себе
  1. Проверка на NaN:
isNaN(NaN);       // true
isNaN("text");    // true (потому что "text" нельзя преобразовать в число)
Number.isNaN(NaN); // true (более строгая проверка)
Number.isNaN("text"); // false
  • isNaN() пытается преобразовать значение в число перед проверкой
  • Number.isNaN() (ES6) проверяет строго без преобразования

Как возникает NaN:

  1. Неудачные математические операции:
0 / 0;          // NaN
Math.sqrt(-1);  // NaN
parseInt("abc"); // NaN
  1. Преобразование типов:
+"text";       // NaN
Number(undefined); // NaN

Особенности работы с NaN:

  1. Распространение в вычислениях:
NaN + 5; // NaN
NaN * 0; // NaN
  1. JSON-сериализация:
JSON.stringify({ value: NaN }); // '{"value":null}'
  1. Логические операции:
Boolean(NaN); // false

Лучшие практики:

  1. Всегда используйте Number.isNaN() вместо isNaN()
  2. Проверяйте входные данные перед математическими операциями
  3. Для сложных проверок используйте Object.is(NaN, value)

Резюмируем:

NaN — это специальное значение типа number, обозначающее недопустимую или неопределённую числовую операцию. Оно обладает уникальными особенностями поведения, которые важно учитывать при разработке на JavaScript/Node.js.