JS метод Number.isNaN()
Загальний опис
Number.isNaN() — це статичний метод в JavaScript, що дозволяє перевірити, чи є задане значення спеціальним значенням "Not-a-Number" (NaN). Його основна корисність полягає в здатності точно розрізняти значення NaN від інших значень. На практиці це може бути корисно, коли потрібно виявити помилкові операції, які призводять до NaN, особливо під час роботи з математичними обчисленнями.
По-перше, давайте розглянемо, як використовувати Number.isNaN() в базових ситуаціях. Цей метод приймає один аргумент та повертає true, якщо значення цього аргументу є NaN, і false - в іншому випадку.
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(42)); // false
console.log(Number.isNaN('42')); // false
Зверніть увагу, що Number.isNaN() відрізняється від глобальної функції isNaN(). Остання перетворює свій аргумент в число, тому може вважати деякі значення "не числами", хоча насправді вони ними не є.
console.log(isNaN('Hello')); // true, оскільки 'Hello' не може бути перетворено в число
console.log(Number.isNaN('Hello')); // false, оскільки 'Hello' не є NaN
Основна відмінність полягає у тому, що Number.isNaN() не намагається перетворити введене значення на число. Це робить його надійнішим для перевірки, чи є конкретне значення дійсно NaN.
Важливо пам'ятати, що NaN у JavaScript має декілька унікальних особливостей. Наприклад, NaN не є рівним самому собі. Тому пряма порівняльна перевірка value === NaN завжди повертає false. Саме тому метод Number.isNaN() стає таким корисним у певних обставинах.
- Порада
-
Незважаючи на те, що
автор: BondNumber.isNaN()корисний для виявлення значеньNaN, ви завжди повинні використовувати додаткові перевірки при валідації даних, щоб впевнитись, що ви отримали числове значення, яке очікували. - Порада
-
Завжди додавайте відповідні перевірки перед використанням математичних операцій, щоб уникнути випадкового отримання
автор: BondNaN. Якщо під час операцій ви отримаєтеNaN, це може призвести до неправильних результатів у подальших обчисленнях. - Порада
-
Хоча обидві функції називаються
isNaN, вони працюють трохи по-різному.Number.isNaN()є більш надійним методом для перевірки на NaN, оскільки він не змінює тип своїх аргументів.
автор: BondisNaN("abc"); // true Number.isNaN("abc"); // false - Порада
-
Number.isNaN()повертаєtrueлише для значень, які є саме NaN. Це допоможе вам виключити інші "не числові" значення з вашої перевірки.
автор: BondNumber.isNaN(undefined); // false Number.isNaN({}); // false
Синтаксис
Number.isNaN(value)
Параметри
value-
Значення, яке необхідно перевірити на
автор: BondNaN.
Повернення
boolean-
Повертає булеве значення
автор: Bondtrue, якщо подане значення є числом із значеннямNaN. В іншому випадку повертаєfalse.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 25 | 15 | 9 | 15 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 25 | 15 | 9 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
У цьому прикладі ми використовуємо метод Number.isNaN() для перевірки, чи є результат ділення числа на нуль "не числом" (NaN).
const result1 = 5 / "text"; // Намагаємося поділити число на текстовий рядок
const result2 = 10 / 2; // Звичайне ділення
console.log(Number.isNaN(result1)); // true
console.log(Number.isNaN(result2)); // false
У цьому прикладі ми створюємо функцію, яка перетворює рядок у число, і використовує Number.isNaN() для повертання спеціального повідомлення, якщо конвертація не вдалася.
function convertToNumber(str) {
const num = Number(str);
// Перевіряємо, чи є результат конвертації "не числом"
if (Number.isNaN(num)) {
return "Конвертація не вдалася! Будь ласка, введіть вірний рядок для конвертації.";
}
return num;
}
const str1 = "25.5";
const str2 = "Hello";
console.log(convertToNumber(str1)); // 25.5
console.log(convertToNumber(str2)); // Конвертація не вдалася! Будь ласка, введіть вірний рядок для конвертації.
Цей приклад дозволить користувачу ввести рядок у текстове поле, а потім натиснути кнопку для перевірки, чи є введене значення NaN за допомогою методу Number.isNaN(). Результат буде відображено під кнопкою.
Коментарі
Коментарів ще немає — будьте першим!