В этом руководстве вы узнаете о JavaScript NaN, как проверить, является ли значение NaN, и как эффективно обрабатывать на примерах.
JavaScript имеет числовой тип, который позволяет вам представлять числа, включая целые числа и числа с плавающей запятой. И число в JavaScript имеет специальное значение, называемое NaN, что означает Not-a–Number.
Значение является свойством глобального объекта. Глобальный объект — это объект window в веб-браузерах:
window.NaN
И глобальный объект в Node.js:
global.NaN
NaN
имеет number
тип, как показано в следующем коде:
console.log(typeof NaN); // number
Проверка, является ли значение NaN
JavaScript предоставляет вам глобальную функцию isNaN()
, которая возвращает true
, если ее аргумент равен NaN
:
isNaN(valueToCheck)
Например:
const result = 100 + 0 / 0; console.log(isNaN(result)); // true
Зачем использовать NaN
JavaScript использует NaN
в результате неудачной операции над числами, включая:
- Разбор номеров
- Использование
undefined
в качестве операнда - Использование
NaN
в качестве операнда - Использование неопределенных форм
- Передача недопустимых аргументов математической функции
Операции, которые возвращают NaN
1) Разбор номера
В JavaScript вы можете преобразовать числовую строку в число. Например:
const input = '100'; const num = parseInt(input); console.log(num); // 100
Если JavaScript не может преобразовать строку в число, он возвращает NaN
. В этом случае NaN
указывает на сбой синтаксического анализа. Например:
const input = 'X100'; const num = parseInt(input); console.log(num); // NaN
Хорошей практикой является проверка результата синтаксического анализа с помощью функции isNaN
:
const input = 'X100'; const num = parseInt(input); // set num to 0 if parsing failed if(isNaN(num)) { num = 0; } console.log(num); // 0
В этом примере синтаксический анализ завершился неудачно, поэтому он вернул NaN
. Условие isNaN(num)
истинно, так что число присваивается 0
.
2) Использовать undefined в качестве операнда
Выражение, использующее undefined
в качестве операнда, возвращает NaN
. Например:
console.log(undefined * 2); // NaN
На практике вы будете иметь дело с undefined довольно часто. Например, когда вы получаете доступ к несуществующему свойству элемента HTML и используете его в расчете.
Рекомендуется избегать использования undefined
значения в расчетах.
3) Использование NaN в качестве операнда
Когда выражение содержит NaN, оно всегда возвращает NaN. Например:
const result = 10 + 1 / NaN; console.log(result); // NaN
4) Использование неопределенных форм
Когда арифметическая операция находится в неопределенной форме, она возвращает NaN. Например:
const result = 10 + 0 / 0; console.log(result); // NaN
5) Использование неверных аргументов математических функций
Когда математическая функция получает недопустимый аргумент, она возвращает NaN. Например:
const result = Math.sqrt(-1); console.log(result); // NaN
В этом примере Math.sqrt()
возвращает квадратный корень числа. Поскольку он принимает только неотрицательные числа, передача -1 приводит к NaN
.
Заключение
- NaN в JavaScript означает Not-a-Number. Это специальное значение свойства глобального объекта.
- Свойство указывает на неудачную операцию над числами.
- Используйте
isNaN()
, чтобы проверить, является ли значениеNaN
.