Number.isInteger() проверяет, является ли значение целым числом.
Метод возвращает true только для значений типа number, у которых нет дробной части.
Синтаксис
Number.isInteger(value)
value - значение, которое нужно проверить.
Что делает Number.isInteger()
Метод отвечает на вопрос: это целое число или нет.
console.log(Number.isInteger(10)); // true
console.log(Number.isInteger(-5)); // true
console.log(Number.isInteger(3.14)); // false
Это удобно, когда нужно отдельно проверить, что число не дробное.
Что возвращает Number.isInteger()
Number.isInteger() всегда возвращает булево значение:
true, если это целое числоfalse, если это дробное число,NaN,Infinityили другой тип
console.log(Number.isInteger(0)); // true
console.log(Number.isInteger(2.5)); // false
console.log(Number.isInteger(Infinity)); // false
3 и 3.0
Если число записано как 3.0, метод всё равно вернёт true.
console.log(Number.isInteger(3)); // true
console.log(Number.isInteger(3.0)); // true
Для JavaScript это одно и то же число без дробной части.
Без неявного приведения типов
Как и другие методы Number.*, Number.isInteger() ничего не преобразует автоматически.
console.log(Number.isInteger("10")); // false
console.log(Number.isInteger(null)); // false
console.log(Number.isInteger(true)); // false
Если значение приходит строкой, обычно сначала его приводят к числу:
const value = Number("10");
console.log(Number.isInteger(value)); // true
Number.isInteger() и Number.isFinite()
Эти методы решают разные задачи.
console.log(Number.isFinite(3.14)); // true
console.log(Number.isInteger(3.14)); // false
Number.isFinite()проверяет, что число конечноеNumber.isInteger()дополнительно требует, чтобы у числа не было дробной части
То есть каждое целое число конечно, но не каждое конечное число целое.
Number.isInteger() и typeof
Проверка через typeof здесь тоже не заменяет метод.
console.log(typeof 3.14); // "number"
console.log(typeof NaN); // "number"
Оба значения имеют тип number, но только для одного из них Number.isInteger() даст true.
Большие числа и Number.isSafeInteger()
Это важный нюанс.
Number.isInteger() проверяет только то, что число целое. Он не говорит, безопасно ли это число с точки зрения точности.
console.log(Number.isInteger(9007199254740992)); // true
console.log(Number.isSafeInteger(9007199254740992)); // false
Если важна точность для очень больших чисел, обычно нужен Number.isSafeInteger().
Когда это полезно
Number.isInteger() удобно использовать, когда:
- нужно проверить индекс, счётчик или количество
- важны только целые значения без дробей
- число уже было получено через
Number()илиparseFloat()
Пример:
const count = Number(userInput);
if (!Number.isInteger(count)) {
console.log("Введите целое число");
}
После Number() и parseFloat()
Метод часто используют после числового преобразования.
const value = Number("42");
console.log(Number.isInteger(value)); // true
А здесь результат уже другой:
const value = parseFloat("42.5");
console.log(Number.isInteger(value)); // false
Частые ошибки
Проверять строку вместо числа
console.log(Number.isInteger("15")); // false
Если значение строковое, сначала его обычно преобразуют:
const value = Number("15");
console.log(Number.isInteger(value)); // true
Путать целое число и безопасное целое число
console.log(Number.isInteger(9007199254740992)); // true
console.log(Number.isSafeInteger(9007199254740992)); // false
Для обычных задач этого различия почти не видно, но при больших числах оно важно.
Думать, что достаточно typeof
const value = 2.5;
console.log(typeof value === "number"); // true
console.log(Number.isInteger(value)); // false
typeof проверяет тип, а не то, является ли число целым.
Быстрая памятка
Number.isInteger()проверяет, является ли значение целым числом- метод возвращает
trueилиfalse - строки и другие типы дают
false 3и3.0считаются целыми числами- для очень больших чисел иногда нужен
Number.isSafeInteger()
Коротко
Number.isInteger() - это удобный способ проверить, получили ли вы целое число в JavaScript. Главное, что стоит запомнить: метод не приводит типы автоматически и не заменяет Number.isSafeInteger(), если для вас важна точность больших чисел.