Чем отличается NaN от других значений в JavaScript и как корректно проверять NaN?
1️⃣ Как кратко ответить
NaN (Not-a-Number) в JavaScript представляет собой специальное значение, которое указывает на результат некорректной или неопределенной математической операции. В отличие от других значений, NaN не равен даже самому себе. Для корректной проверки на NaN следует использовать функцию Number.isNaN(), так как она точно определяет, является ли значение NaN.
2️⃣ Подробное объяснение темы
NaN, что расшифровывается как "Not-a-Number", является специальным значением в JavaScript, которое используется для обозначения результата математических операций, которые не могут быть выполнены корректно. Например, деление нуля на ноль или преобразование строки, не содержащей числовых данных, в число.
Особенности NaN
-
Не равен самому себе: В отличие от других значений в JavaScript, NaN не равен даже самому себе. Это означает, что выражение
NaN === NaNвозвращаетfalse. Это поведение делает NaN уникальным среди других значений. -
Тип данных: NaN имеет тип данных
number, несмотря на то, что он обозначает "не число". Это может быть несколько запутанным, но важно помнить, что NaN является частью числового типа в JavaScript.
Пример использования NaN
let result = 0 / 0; // Деление нуля на ноль
console.log(result); // Выводит NaN
let invalidNumber = Number("abc"); // Преобразование некорректной строки в число
console.log(invalidNumber); // Выводит NaN
Проверка на NaN
Поскольку NaN не равен самому себе, стандартные методы проверки на равенство не работают. Вместо этого, JavaScript предоставляет специальные функции для проверки на NaN.
- isNaN(): Эта функция преобразует переданное значение в число и проверяет, является ли результат NaN. Однако, она может быть не всегда точной, так как преобразует нечисловые строки в NaN.
console.log(isNaN("abc")); // true, так как "abc" не может быть преобразовано в число
console.log(isNaN(NaN)); // true
console.log(isNaN(123)); // false, так как 123 — это число
- Number.isNaN(): Более точная функция, которая проверяет, является ли значение NaN без преобразования типов. Она возвращает
trueтолько в том случае, если переданное значение действительно NaN.
console.log(Number.isNaN("abc")); // false, так как "abc" не является числом
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(123)); // false
Почему важно правильно проверять NaN
Правильная проверка на NaN важна для предотвращения ошибок в логике программы. Использование Number.isNaN() позволяет избежать ложных срабатываний, которые могут возникнуть при использовании isNaN(), особенно когда работаешь с данными, которые могут быть преобразованы в числа. Это особенно важно в автоматизированном тестировании, где точность и надежность проверки данных имеют критическое значение.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться