Вебсправочник
Справочник JavaScript

Number.isSafeInteger(): проверка точного целого числа

Number.isSafeInteger проверяет, находится ли целое значение Number в безопасном диапазоне представления. Это полезно при работе со счётчиками и идентификаторами, где соседние целые должны различаться.

Назначение

Number.isSafeInteger проверяет, находится ли целое значение Number в безопасном диапазоне представления. Это полезно при работе со счётчиками и идентификаторами, где соседние целые должны различаться.

Как это работает

Метод не преобразует строки в числа и отвергает дроби, NaN и бесконечности. Безопасная граница Number равна 2 в степени 53 минус 1 по модулю.

Пример

const edge = Number.MAX_SAFE_INTEGER;
console.assert(Number.isSafeInteger(edge));
console.assert(!Number.isSafeInteger(edge + 1));
console.assert(!Number.isSafeInteger("42"));
console.assert(!Number.isSafeInteger(4.2));
console.assert(Number.isSafeInteger(-42));
console.log(edge);

Что должно получиться

Граничное безопасное число проходит проверку, следующее — нет. Строка с цифрами остаётся строкой и не принимается как готовое числовое значение.

Граница применения и частая ошибка

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

Самостоятельная проверка

Сравните isInteger и isSafeInteger на числе за безопасной границей. Подготовьте JSON с большим идентификатором в строковом поле и проверьте сохранность цифр. Не преобразуйте его в Number без прикладной необходимости.

Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.