JS метод Global.isNaN()
Загальний опис
isNaN() - це глобальний метод в JavaScript, призначений для перевірки значень на їх відповідність "не числу" (Not-a-Number). У мовах програмування іноді виникають ситуації, коли результат обчислення або операції не може бути визначений як дійсне число. У таких випадках JavaScript повертає спеціальне значення – NaN.
Чому потрібен метод isNaN()? При програмуванні на JavaScript може виникнути необхідність розібратися, чи є певне значення дійсним числом. І хоча NaN сам по собі є числовим типом даних в JavaScript, спроби порівняти його з іншими значеннями можуть призвести до непередбачуваних результатів. Наприклад, NaN не є рівним самому собі:
console.log(NaN === NaN); // false
Отже, для визначення того, чи є значення NaN, ми використовуємо isNaN().
Як і де використовувати isNaN()? Припустимо, у вас є програма, яка приймає введені користувачем дані, і вам потрібно переконатися, що користувач вводить тільки числові значення. Щоб це зробити, ви можете використовувати isNaN() таким чином:
let userValue = prompt("Введіть число:");
if (isNaN(userValue)) {
console.log("Це не число!");
} else {
console.log("Дякуємо за число!");
}
Основні сфери застосування isNaN() це обробка введення користувача, перевірка результатів обчислень або будь-яка інша ситуація, коли може виникнути потреба визначити, чи є значення дійсним числом.
Тепер розглянемо деякі особливості роботи isNaN(). Цей метод може повертати не завжди очікувані результати, особливо при роботі з нечисловими типами даних. Наприклад:
console.log(isNaN("123")); // false, бо рядок може бути перетворений на число
console.log(isNaN("Hello")); // true, бо рядок "Hello" не може бути перетворений на число
Якщо ви хочете мати більший контроль над перевіркою значень на NaN, рекомендується використовувати Number.isNaN(). Відмінність цього методу в тому, що він не намагається перетворити значення на число перед перевіркою:
console.log(Number.isNaN("123")); // false
console.log(Number.isNaN("Hello")); // false
console.log(Number.isNaN(NaN)); // true
| Нотатка: | Якщо ви використовуєте
|
| Порада: | Пам'ятайте, що |
| Порада: | Використовуйте
|
| Порада: | Коли працюєте з бібліотеками або фреймворками, які можуть повертати невизначені значення, завжди використовуйте |
Синтаксис
isNaN(value)
Параметри
- *
value Значення, яке потрібно перевірити на
NaN.
Return
boolПовертає
true, якщо подане значення єNaNпісля його конвертації в число; в іншому випадку повертаєfalse.
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
1 |
1 |
1 |
3 |
12 |
| Переглядач | ||||
|---|---|---|---|---|
4.4 |
18 |
4 |
1 |
| Переглядач | ||
|---|---|---|
0.10.0 |
1.0 |
Приклади
Цей код створює простий інтерфейс, де користувач може ввести значення для перевірки. Після натискання на кнопку "Перевірити", код перевіряє, чи є введене значення числом або ні, і відображає відповідне повідомлення.
У цьому прикладі ми створили функцію isValidNumber(), яка перевіряє, чи є введене користувачем значення дійсним числом. Якщо воно не є числом (NaN) або являє собою пустий рядок, функція повертає false. Інакше - true.
// Функція для перевірки, чи є введене значення коректним числом
function isValidNumber(inputValue) {
// Якщо значення є NaN або пустим рядком, повертаємо false
return !isNaN(inputValue) && inputValue !== "";
}
// Тестуємо функцію на декількох прикладах
console.log(isValidNumber("123")); // true, бо це валідне число
console.log(isValidNumber("abc")); // false, бо це не число
console.log(isValidNumber("")); // false, бо це пустий рядок
У другому прикладі ми створили функцію safeDivide(), яка ділить два числа. Якщо друге число (дільник) дорівнює нулю, результатом ділення буде NaN. Функція перевіряє результат на NaN і, якщо він NaN, повертає повідомлення "Ділення на нуль!". Якщо результат коректний, він повертається як відповідь.
// Функція для ділення двох чисел з перевіркою на ділення на нуль
function safeDivide(a, b) {
let result = a / b;
// Якщо результат ділення є NaN, повертаємо попередження
if (isNaN(result)) {
return "Ділення на нуль!";
}
return result;
}
// Тестуємо функцію
console.log(safeDivide(10, 2)); // 5
console.log(safeDivide(10, 0)); // Ділення на нуль!
