... Как проверить, что это число js. 🧐 Глубокое погружение в мир чисел JavaScript: Как проверить тип и свойства числовых значений
🚀Статьи

Как проверить, что это число js

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

В самом начале нашего погружения в мир чисел 🧮 JavaScript важно понимать, что не все значения, которые выглядят как числа, на самом деле ими являются. Например, строка "123" с точки зрения JavaScript — это строка, а не число. Для точной идентификации типа и свойств числовых значений в JavaScript существует ряд встроенных методов, которые мы подробно рассмотрим.

🎯 Проверка на конечность числа: Number.isFinite()

Метод Number.isFinite() — ваш надежный помощник в определении, является ли значение конечным числом. 🧐 Это значит, что оно не равно Infinity (бесконечности), -Infinity (отрицательной бесконечности) или NaN (Not a Number — не число).

Вот основные тезисы об Number.isFinite():

  • Аргумент: Метод принимает только один аргумент — значение, которое нужно проверить.
  • Не число: Если передать методу любое значение, которое не является числом, он вернет false.
  • Конечность: Метод вернет true только в том случае, если значение — конечное число.
  • Бесконечность и NaN: Бесконечность (как Infinity или Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY) и NaN всегда возвращают false.

javascript

console.log(Number.isFinite(10)); // true

console.log(Number.isFinite(3.14)); // true

console.log(Number.isFinite(Infinity)); // false

console.log(Number.isFinite(NaN)); // false

console.log(Number.isFinite("10")); // false (строка)

console.log(Number.isFinite(null)); // false

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

🧐 Проверка, является ли значение числом: Number.isNaN() и typeof

Для проверки, является ли значение именно числом, часто используется метод Number.isNaN() и оператор typeof.

  • Number.isNaN(): Этот метод, вопреки своему названию, не проверяет, является ли значение «не числом» в общем смысле. Он проверяет, является ли значение именно NaN (Not a Number).
  • Важно отметить, что isNaN() глобальная функция работает иначе, чем Number.isNaN().
  • Глобальная функция isNaN() попытается преобразовать значение в число перед проверкой, что может привести к неинтуитивным результатам.
  • typeof: Для проверки типа данных используйте оператор typeof.
  • Если typeof возвращает "number", значит, значение является числом.
  • Однако, typeof Infinity также вернет "number", поэтому для более точной проверки используйте Number.isFinite().
  • typeof NaN также вернет "number".

javascript

console.log(Number.isNaN(NaN)); // true

console.log(Number.isNaN(10)); // false

console.log(typeof 10); // "number"

console.log(typeof Infinity); // "number"

console.log(typeof NaN); // "number"

console.log(typeof "10"); // "string"

Важно помнить: NaN является числовым значением, но представляющим «не число». Поэтому typeof NaN вернет "number".

🧮 Проверка на целое число: Number.isInteger()

Если вам нужно убедиться, что число является целым, используйте метод Number.isInteger().

  • Простота: Он принимает один аргумент и возвращает true, если аргумент — целое число, и false в противном случае.
  • Без дробей: Метод не распознает дробные числа как целые.

javascript

console.log(Number.isInteger(10)); // true

console.log(Number.isInteger(10.5)); // false

console.log(Number.isInteger("10")); // false (строка)

Это особенно полезно при работе с индексами массивов, циклами и другими ситуациями, где требуется гарантировать целочисленное значение.

🔍 Проверка на простое число: Алгоритмический подход

Проверка, является ли число простым, требует более алгоритмического подхода.

  • Простое число: Простое число — это натуральное число больше 1, которое делится только на 1 и на само себя без остатка.
  • Алгоритм: Для проверки на простоту нужно перебрать все числа от 2 до корня квадратного из проверяемого числа. Если число делится на какое-либо из них без остатка, то оно не является простым.

javascript

function isPrime(num) {

if (num <= 1) return false;

if (num <= 3) return true;

if (num % 2 0 || num % 3 0) return false;

For (let i = 5; i * i <= num; i += 6) {

if (num % i 0 || num % (i + 2) 0) return false;

}

return true;

}

Console.log(isPrime(7)); // true

console.log(isPrime(10)); // false

console.log(isPrime(17)); // true

Этот алгоритм является достаточно эффективным для большинства случаев.

✍️ Проверка, является ли строка числом: parseInt(), try-catch и регулярные выражения

Проверка, является ли строка числом, может быть немного сложнее.

  • parseInt(): Метод parseInt() преобразует строку в целое число. Если строка не может быть преобразована в число, он вернет NaN.
  • Этот метод можно использовать в сочетании с Number.isNaN().
  • Метод parseInt() может игнорировать нечисловые символы в начале строки и преобразовывать только начальную часть в число.
  • try-catch: Для предотвращения ошибок при преобразовании строки в число можно использовать блок try-catch.
  • Регулярные выражения: Регулярные выражения позволяют проверить, состоит ли строка только из цифр.

javascript

function isStringNumber(str) {

try {

const num = parseInt(str);

return !Number.isNaN(num) && String(num) str;

} catch (e) {

return false;

}

}

Function isStringOnlyDigits(str) {

return /^\d+$/.test(str);

}

Console.log(isStringNumber("123")); // true

console.log(isStringNumber("123a")); // false

console.log(isStringNumber("abc")); // false

console.log(isStringOnlyDigits("123")); // true

console.log(isStringOnlyDigits("123a")); // false

Регулярные выражения предоставляют более точный контроль над структурой строки.

📝 Выводы и Заключение

В JavaScript работа с числами 🔢 требует внимательности и понимания нюансов. Использование методов Number.isFinite(), Number.isNaN(), Number.isInteger() и оператора typeof позволяет точно определить тип и свойства числовых значений. Для проверки на простоту чисел нужен алгоритмический подход. А для проверки строк на числовое представление, используйте parseInt(), try-catch и регулярные выражения. Помните, что NaN — это числовое значение, представляющее «не число», а typeof Infinity и typeof NaN вернут "number". Понимание этих особенностей поможет вам писать более надежный и предсказуемый код.

❓ FAQ: Часто задаваемые вопросы

Q: Как отличить целое число от дробного?

A: Используйте Number.isInteger(). Он вернет true только для целых чисел.

Q: Почему typeof NaN возвращает "number"?

A: NaN (Not a Number) — это специальное числовое значение, представляющее «не число». Поэтому, хоть оно и не является «обычным» числом, его тип — "number".

Q: Как проверить, что строка содержит только цифры?

A: Используйте регулярное выражение /^\d+$/.test(str) или метод isStringOnlyDigits(), описанный выше.

Q: Что делает Number.isFinite()?

A: Он проверяет, является ли значение конечным числом (не Infinity, -Infinity или NaN).

Q: Как преобразовать строку в число?

A: Используйте parseInt() для преобразования в целое число или parseFloat() для преобразования в число с плавающей запятой. Помните про возможные ошибки и используйте try-catch.

Какое важнейшее событие произошло в 1901 году
Вверх