Часто при работе с числами в JavaScript возникает необходимость проверить, является ли значение NaN (Not-A-Number). Для этой задачи есть две функции — isNaN и Number.isNaN. Они похожи по названию, но отличаются в своем поведении и способе работы.
Функция isNaN проверяет, является ли переданное значение NaN. Она принимает аргумент, преобразует его в число и проверяет, равно ли полученное число NaN. Если значение равно NaN, функция вернет true, иначе — false.
Однако не всегда использование функции isNaN даёт ожидаемый результат. NaN имеет технический тип «число», и если в функцию isNaN передать значение, которое не является числом (например, строку или логическое значение), она также вернет true. Это может привести к ошибкам в логике программы.
Здесь на помощь приходит функция Number.isNaN, которая является статическим методом объекта Number. Она принимает аргумент, преобразует его в число и проверяет, является ли полученное число NaN. В отличие от функции isNaN, Number.isNaN строго проверяет значение и не преобразует его в число, если оно не является числом. Функция Number.isNaN возвращает true только для значения NaN, в остальных случаях — false.
Отличия функций isnan и number isnan
Функция isnan является глобальным методом JavaScript, который возвращает true, если переданное значение является NaN, и false, если переданное значение может быть числом или приведено к числу. Например:
isNaN(NaN); // true
isNaN(10); // false
isNaN('строка'); // true
isNaN(true); // false
Функция isnan может принимать как числовые значения, так и нечисловые значения, и всегда будет возвращать false для нечисловых значений, которые могут быть приведены к числу.
Функция Number.isNaN, с другой стороны, является статическим методом Number, который возвращает true, только если переданное значение является NaN. Например:
Number.isNaN(NaN); // true
Number.isNaN(10); // false
Number.isNaN('строка'); // false
Number.isNaN(true); // false
Функция Number.isNaN строго проверяет, является ли переданное значение NaN, и не позволяет привести нечисловые значения к числу.
Важно отметить, что функция number isnan доступна только в современных версиях JavaScript (ES6 и выше), поэтому если вам нужна поддержка старых браузеров, рекомендуется использовать функцию isnan.
Функция isnan
Синтаксис использования функции:
isNaN(value)
где value — проверяемое значение.
Функция isnan возвращает true, если значение является NaN, и false, если значение — число или другой тип данных.
Значение undefined или null также возвращают false при проверке на isNaN.
Пример использования функции:
isNaN(NaN); // true
isNaN(10); // false
isNaN(«abc»); // true
isNaN(undefined); // false
Функция isnan применяется для проверки, соответствует ли значение каким-либо числовым условиям или нет. Это может быть полезно при различных вычислениях и валидации данных в JavaScript.
Функция number isnan
Основным отличием функции number isnan от isnan является то, что функция number isnan применяется к числам, а не к переменным или выражениям. Она позволяет проверить, является ли число не числом, и вернуть булевое значение true или false в зависимости от результата.
Пример использования функции number isnan:
- number isnan(NaN) — вернет true, так как переданное значение не является числом;
- number isnan(10) — вернет false, так как переданное значение является числом;
- number isnan(«строка») — вернет true, так как переданное значение не является числом;
- number isnan(undefined) — вернет true, так как переданное значение не является числом;
- number isnan(null) — вернет false, так как переданное значение является числом (ноль);
Как видно из примеров, функция number isnan позволяет определить, является ли значение числом или нет. Она может быть полезна при работе с переменными и проверке их типа.
Сравнение поведения функций isnan и number isnan
Функция isnan принимает аргумент и возвращает true, если аргумент является не числом или NaN. Эта функция не пытается преобразовать аргумент в число.
Например:
isNaN("hello"); // true
isNaN(123); // false
isNaN(NaN); // true
В данном примере, функция isnan возвращает true, так как строка «hello» не является числом. Аргументы «123» и NaN не являются не числом, поэтому функция возвращает false и true соответственно.
С другой стороны, функция Number.isNaN также принимает аргумент и возвращает true, если аргумент является NaN. Однако, в отличие от функции isnan, перед превращением аргумента в число, функция Number.isNaN проверяет, является ли его тип NaN.
Например:
Number.isNaN("hello"); // false
Number.isNaN(123); // false
Number.isNaN(NaN); // true
В данном примере, функция Number.isNaN возвращает false для аргументов «hello» и «123», так как они не являются NaN. Она возвращает true для аргумента NaN, так как его тип является NaN.
Таким образом, основное отличие между функциями isnan и Number.isNaN состоит в том, что функция isnan не преобразует аргумент в число, в то время как функция Number.isNaN проверяет, является ли тип аргумента NaN.