skip to main content

Number.isNaN()

js

Кратко 🔗

Существуют ситуации, когда результат математической обработки не может быть получен.

Например Math.sqrt(-9) или parseInt('text') и результатом будет NaN

По спецификации JavaScript результат сравнения NaN с чем угодно (даже с самим собой) будет false. Поэтому был создан специальный метод для проверки isNaN 😎, а потом и Number.isNaN

Как пишется 🔗

let result = Math.sqrt(-9) // NaN
console.log(result === NaN) // false
console.log(Number.isNaN(result)) // true

Как это понять 🔗

NaN расшифровывается как Not a Number. Он относится к числовому типу, если сделать typeof NaN , то вернется строка number. Его нельзя ни с чем сравнить, и поэтому проверять нужно отдельным способом.

Для проверки рекомендуется применять Number.isNaN. Есть похожий второй метод isNaN, но он работает не всегда так, как ожидается и возвращает true и при значениях, отличных от NaN. Например:

isNaN(undefined) // напечатает true
Number.isNaN(undefined) //напечатает false

В работе 🔗

Миша 👨‍🔧

🛠 При анализе ввода пользователя всегда нужно проверять результаты вычислений, иначе пользователь вместо расчета — например «Итого» в корзине увидит непонятные для себя символы. Вот, к примеру, очень приятная цена ✈️

NaN цена за билет

Попробуй имитировать ошибку и ввести в поле что-то помимо числа скидки, без проверки тоже получится NaN:

See the Pen isNaN - в работе by vindi-r (@vindi-r) on CodePen.


Автор: Миша 👨‍🔧