Чем отличается поведение функций isnan и Number.isNaN


При работе с числами в программировании нередко возникает необходимость проверить, является ли значение переменной числом. Для такой проверки в языке JavaScript существуют две функции: isNaN и Number.isNaN. Однако, несмотря на схожие названия, эти функции имеют существенные различия в своем поведении и применении.

Функция isNaN является глобальным методом языка JavaScript и используется для проверки, является ли переданное значение нечисловым или является ли оно NaN (Not a Number). Эта функция может принимать любое значение в качестве аргумента и возвращает значение true, если аргумент не является числом или является NaN, и значение false в противном случае.

В отличие от функции isNaN, метод Number.isNaN является статическим методом объекта Number и используется для проверки, является ли переданное значение NaN. Этот метод также может принимать любое значение в качестве аргумента, но возвращает значение true только в том случае, если аргумент действительно является NaN, и значение false во всех остальных случаях.

Различия функций isnan и number isnan

isNaN(NaN); // true

Эта функция может быть использована для проверки числовых значений на ошибки или неопределенность, таких как деление на ноль или математические операции с нечисловыми значениями.

Функция Number.isNaN, с другой стороны, является статическим методом объекта Number. Она также используется для определения, является ли значение не является числом (NaN), но она более строгая в своем подходе. Она принимает один аргумент и возвращает логическое значение true, только если переданное значение является NaN и является числом. Например:

Number.isNaN(NaN); // true

Эта функция отличается от функции isnan тем, что не преобразует переданное значение в число перед проверкой. Она также рассматривает только NaN, игнорируя другие нечисловые значения, такие как строки или булевы значения.

Итак, основное отличие между функциями isnan и Number.isNaN заключается в их подходе к проверке нечисловых значений на NaN. Функция isnan более толерантна и может преобразовывать переданное значение в число перед проверкой, в то время как функция Number.isNaN более строгая и отвергает нечисловые значения, отличные от NaN.

Функция isnan

NaN — это специальное значение, которое обозначает «не число». Оно возникает, когда математическая операция не может быть выполнена или возвращает неопределенный результат.

Функция isnan принимает один аргумент и возвращает логическое значение true или false в зависимости от того, является ли этот аргумент NaN или нет.

Пример использования функции isnan:

const number = 10;const notANumber = NaN;console.log(isNaN(number)); // falseconsole.log(isNaN(notANumber)); // true

Важно отметить:

Функция isnan преобразует аргумент в число перед проверкой, поэтому перед использованием ее со строковыми значениями или другими типами данных, следует убедиться в правильности преобразования.

Если передать аргумент, который не может быть преобразован в число (например, строку без числа или бесконечность), функция также вернет true.

Функция number isnan

Например, если вызвать функцию number isnan с аргументами 3 и NaN, она вернет true, так как одно из переданных значений является NaN. Если же вызвать эту функцию с аргументом 3, она вернет false, так как все переданные значения являются числами.

Функция number isnan может быть полезна, когда необходимо проверить массив или другую коллекцию на наличие хотя бы одного NaN-значения. Её использование может помочь избежать неявного типового приведения и ошибок при работе с числами.

Использование в JavaScript

Функция Number.isNaN, введенная в стандарте ECMAScript 2015 (ES6), также используется для проверки, является ли значение NaN. Однако, в отличие от isNaN, Number.isNaN возвращает true только в том случае, если значение действительно является NaN, и false, если значение является числом или другим значением.

Используя isNaN для проверки NaN, необходимо быть осторожным, так как она также возвращает true для некоторых нечисловых значений, таких как строки, символы и булевы значения. Поэтому перед использованием isNaN рекомендуется проверять, является ли аргумент числом при помощи функции typeof.

С функцией Number.isNaN более безопасно работать, так как она строго проверяет, является ли значение NaN. Это особенно полезно, когда нам нужно найти именно NaN в массиве или коллекции чисел, и исключить такие значения из дальнейшей обработки.

Результаты и возвращаемые значения

Функция Number.isNaN также проверяет, является ли значение не числом (NaN), но отличается от обычной функции isnan своим поведением при проверке.

Если значение, переданное в функцию, не является примитивным числом или числовым объектом, то функция возвращает false. Это поведение делает функцию Number.isNaN безопасной при использовании с неявными конверсиями, такими как преобразование строк в числа.

Пример:

isNaN(NaN); // trueisNaN(123); // falseisNaN('123'); // false (преобразование строки '123' в число 123)isNaN('hello'); // true (преобразование строки 'hello' в NaN)Number.isNaN(NaN); // trueNumber.isNaN(123); // falseNumber.isNaN('123'); // false (неявное преобразование строки '123' в число 123)Number.isNaN('hello'); // false (строка 'hello' не является числом)

Типы данных и обработка ошибок

Один из распространенных типов данных — числовой тип данных. В JavaScript, числовые значения могут быть представлены двумя основными типами: NaN (Not a Number) и число.

Функции isNaN и Number.isNaN используются для проверки, является ли значение NaN или числом, соответственно.

Функция isNaN возвращает true если значение является NaN, в противном случае она возвращает false. Однако, она имеет некоторые особенности и не всегда работает корректно. Например, она преобразует строку в число перед проверкой, что может привести к неожиданным результатам.

В отличие от isNaN, функция Number.isNaN возвращает true только если тип значения является числом и само значение является NaN. Она не преобразует строки в числа и не вызывает побочные эффекты.

Правильное использование этих функций является важной частью обработки ошибок в программировании. Они позволяют производить надежные проверки значений и принимать соответствующие меры в случае ошибок.

Примеры использования

Вот несколько примеров, демонстрирующих различия между функциями isnan и number isnan:

ПримерРезультат функции isnanРезультат функции number isnan
isnan(‘foo’)truefalse
isnan(‘123’)truefalse
number isnan(‘foo’)truetrue
number isnan(‘123’)falsefalse
isnan(NaN)truetrue
number isnan(NaN)falsetrue

Как видно из примеров, функция isnan возвращает true, если аргумент не является числом, включая строковые значения, в то время как функция number isnan возвращает true только для NaN (не числового значения). Это важно учитывать при использовании этих функций для проверки числовых значений.

Сравнение производительности

При сравнении производительности функций isnan и Number.isNaN важно учитывать их работу с различными типами данных.

Функция isnan принимает аргумент и пытается преобразовать его в число. Если преобразование не удается, она возвращает true, иначе — false. Однако, функция isnan может быть не надежной при работе с некоторыми специальными значениями, такими как NaN и Infinity.

В свою очередь, функция Number.isNaN работает только с аргументами типа number. Она не производит попытку преобразования перед проверкой, и возвращает true только для значения NaN. В остальных случаях возвращается false.

Преимущество функции Number.isNaN заключается в том, что она гарантирует точность результата при проверке на NaN, вне зависимости от типа аргумента. Однако, из-за отсутствия попытки преобразования, она может не работать корректно с другими типами данных.

Добавить комментарий

Вам также может понравиться