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)); // Ділення на нуль!