Number.isNaN()
- Что такое Number.isNaN()
- Синтаксис
- Чем отличается от isNaN()
- Проверка после преобразования
- Number.isNaN() и prompt()
- Итого
Number.isNaN() - это метод, который проверяет, является ли значение именно NaN.
console.log(Number.isNaN(NaN));
console.log(Number.isNaN(25));
Результат:
true
false
Если передать настоящий NaN, метод вернет true. Во всех остальных случаях - false.
Что такое Number.isNaN()
NaN появляется, когда JavaScript пытался получить число, но не смог.
let value = Number('JavaScript');
console.log(value);
Результат:
NaN
Проверить такой результат можно через Number.isNaN():
let value = Number('JavaScript');
console.log(Number.isNaN(value));
Результат:
true
Этот метод не пытается угадывать, можно ли значение превратить в число. Он просто проверяет: перед нами уже NaN или нет.
Синтаксис
Общая запись выглядит так:
Number.isNaN(value);
value - значение, которое нужно проверить.
let result = Number.isNaN(NaN);
console.log(result);
Результат:
true
Чем отличается от isNaN()
Главное отличие: isNaN() сначала пытается преобразовать значение в число, а Number.isNaN() ничего не преобразует.
console.log(isNaN('JavaScript'));
console.log(Number.isNaN('JavaScript'));
Результат:
true
false
isNaN(‘JavaScript’) вернул true, потому что строка ‘JavaScript’ при преобразовании в число дает NaN.
Number.isNaN(‘JavaScript’) вернул false, потому что сама строка не является значением NaN.
Еще один пример:
console.log(isNaN('25'));
console.log(Number.isNaN('25'));
Результат:
false
false
Оба результата false, но причины разные. Для isNaN() строка ‘25’ сначала превращается в число. Для Number.isNaN() это просто строка, а не NaN.
Проверка после преобразования
Number.isNaN() удобно использовать после явного преобразования в число.
let value = Number('42');
console.log(Number.isNaN(value));
Результат:
false
Число получилось, значит это не NaN.
let value = Number('сорок два');
console.log(Number.isNaN(value));
Результат:
true
Здесь получить число не удалось, поэтому в переменной лежит NaN.
То же самое работает с parseInt() и parseFloat():
let width = parseInt('120px', 10);
let height = parseInt('px120', 10);
console.log(Number.isNaN(width));
console.log(Number.isNaN(height));
Результат:
false
true
Из строки ‘120px’ число получить получилось, а из ‘px120’ - нет.
Number.isNaN() и prompt()
prompt() всегда возвращает строку. Поэтому сначала значение нужно преобразовать, а уже потом проверять через Number.isNaN().
let value = prompt('Введите число');
let numberValue = Number(value);
if (Number.isNaN(numberValue)) {
console.log('Это не число');
} else {
console.log(numberValue * 2);
}
Если пользователь введет 10, в консоли будет:
20
Если пользователь введет текст, в консоли будет:
Это не число
Пустой ввод лучше проверять отдельно. Дело в том, что Number(”) дает 0, а 0 не является NaN.
Итого
Number.isNaN() строго проверяет, является ли значение NaN. Он не преобразует строки, boolean, null или другие значения в число.
Number.isNaN(value);
Чаще всего метод используют после Number(), parseInt() или parseFloat(), чтобы понять, получилось ли нормальное число.