Тип данных BigInt в JavaScript
bigint - числовой примитивный тип данных в JavaScript, позволяющий работать с числами произвольной точности. Проблема в том что тип данных Number может хранить числа только в определенном диапазоне.
const biggestNumber = Number.MAX_SAFE_INTEGER;
console.log(biggestNumber);
console.log(biggestNumber + 1);
console.log(biggestNumber + 2);
console.log(biggestNumber + 3);
Открыть на CodePen
Если мы будем увеличивать это число на Number не сможет точно сохранить результат. BigInt позволяет нам хранить числа за пределами максимального целочисленного значения Number.
Создать BigInt можно следующим образом:
const bigIntExample_1 = 100n;
const bigIntExample_2 = BigInt(100);
console.log(bigIntExample_1, bigIntExample_2);
Открыть на CodePen
Просто добавляем суффикс 'n' в конце литерала числа или используем функцию BigInt().
Теперь попробуем повторить первый пример только уже с использованием BigInt
const bigIntNumber = BigInt(Number.MAX_SAFE_INTEGER);
console.log(bigIntNumber + 1n);
console.log(bigIntNumber + 2n);
console.log(bigIntNumber + 3n);
console.log(bigIntNumber + 4n);
Открыть на CodePen
Аналогично как и с типом данных Number мы можем разделять большие числа через '_'.
const bigIntExample_3 = 1_000_000_000_000_000n;
console.log(bigIntExample_3);
Если мы будем сравнивать BigInt c Number через '===' то при одинаковых значениях получим false, так как это разные типы данных.
const bigIntExample_4 = 10n;
const numberExample_1 = 10;
console.log(bigIntExample_4 === numberExample_1); // false
console.log(bigIntExample_4 == numberExample_1); // true
Открыть на CodePen
В таком случае мы можем использовать оператор '==', тогда сравнение пройдет успешно. Так как '==' сравнивает только значения без приведения типов.
P.S. Больше информации в видеоуроке
P.P.S. Больше уроков у меня на канале.