Примитивы BigInt — относительно новое дополнение к JavaScript, позволяющее выполнять математические операции с числами, выходящими за пределы диапазона, разрешенного Number
. Чтобы создать BigInt, добавьте n
в конец числового литерала или передайте целое или числовое строковое значение в функцию BigInt()
.
const myNumber = 9999999999999999;
const myBigInt = 9999999999999999n;
typeof myNumber;
> "number"
typeof myBigInt;
> "bigint"
myNumber;
> 10000000000000000
myBigInt;
> 9999999999999999n
В этом примере 9999999999999999
находится за пределами диапазона цифр, который можно безопасно представить с помощью Number
, что приводит к ошибке округления.
Значения BigInt не наследуют методы и свойства объекта Number
, и их нельзя использовать с методами, предоставляемыми встроенным объектом Math
в JavaScript. Самое главное, вы не можете смешивать примитивы BigInt и Number в стандартных арифметических операциях:
9999999999999999n + 5
> Uncaught TypeError: can't convert BigInt to number
Чтобы выполнять арифметические действия с BigInts, вы должны определить оба операнда как значения BigInt:
console.log( 9999999999999999 + 10 ); // Off by one
> 10000000000000010
console.log( 9999999999999999n + 10n );
> 10000000000000009n