Всем известно, что значение глобального свойства NaN
(Not-a-Number) в JavaScript не равно ничему, даже другому NaN
. Но какой тип данных соответствует NaN
?
console.log(typeof NaN);
Какой результат мы увидим в консоли при выполнении этого кода?
Значение NaN и его тип данных
Сейчас NaN
используется довольно редко, но чаще всего это значение можно увидеть при приведении типов. Например, если попытаться преобразовать текст в число:
console.log(Number("число"));
// NaN
Таким образом, JavaScript указывает на то, что не может определить, какому числу соответствует данное значение или выражение.
Может показаться невероятным и нелогичным, но для JavaScript значение глобального свойства NaN
является числом. То есть NaN
соответствует типу данных number
:
console.log(typeof NaN);
// number
Когда появляется NaN
NaN
может появиться в различных ситуациях, например, при математических операциях, которые не могут быть выполнены:
console.log(0 / 0);
// NaN
console.log(Math.sqrt(-1));
// NaN
Проверка на NaN
Поскольку NaN
не равен ничему, даже самому себе, для проверки значения на NaN
необходимо использовать функцию isNaN()
:
let value = NaN;
if (isNaN(value)) {
console.log("Значение является NaN");
} else {
console.log("Значение не является NaN");
}
// Вывод: Значение является NaN
Заключение
На первый взгляд, поведение NaN
может показаться запутанным. Однако понимание его сути и особенностей помогает избежать ошибок при работе с данными. NaN
является числом, но особенным числом, которое используется JavaScript для обозначения невозможных или неопределенных числовых операций.