Кратко
BigInt — тип для целых чисел произвольной длины. Создаётся через суффикс n (123n) или BigInt(123). В отличие от Number: нет потери точности для больших целых. Ограничение: нельзя смешивать BigInt и Number в арифметике.
Подробно
Создание: const big = 123n; const fromNumber = BigInt(123); const fromString = BigInt('9007199254740993');
Number vs BigInt: console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991 console.log(9007199254740992 === 9007199254740993); // true (потеря точности!) console.log(9007199254740992n === 9007199254740993n); // false (точно!)
Ограничение — нельзя смешивать: const result = 1n + 1; // TypeError: Cannot mix BigInt and other types const result2 = 1n + BigInt(1); // 2n (OK) const result3 = Number(1n) + 1; // 2 (OK, но может потерять точность)
Сравнение (работает): console.log(1n == 1); // true console.log(1n === 1); // false (разные типы) console.log(1n < 2); // true
Округление: console.log(Number(123n)); // 123 console.log(123n.toString()); // '123'
Использование:
- Криптовалюты (целые сатоши)
- ID баз данных (64-bit integers)
- Точные вычисления с большими числами
Ментальная модель
BigInt — как калькулятор с бесконечным дисплеем. Обычный Number — калькулятор с 16-значным дисплеем (теряет точность после 15-16 цифр). BigInt — калькулятор, который помнит каждую цифру, но не понимает дробей.
Примеры
**Самый простой:**
const a = 123456789012345678901234567890n;
const b = BigInt('999999999999999999999');
console.log(a + b); // 123456789012345678901345678889n
console.log(typeof a); // 'bigint'BigInt: создание и арифметика.
**Простой:**
// Number: потеря точности
console.log(9007199254740992 + 1); // 9007199254740992 (ошибка!)
// BigInt: точно
console.log(9007199254740992n + 1n); // 9007199254740993n
// Сравнение
console.log(1n == 1); // true (приведение типа)
console.log(1n === 1); // false (разные типы)Number vs BigInt: точность больших целых.
**Реальный пример:**
// Криптовалюта: сатоши (1 BTC = 10^8 satoshi)
const satoshiBalance = 2100000000000000n; // 21 млн BTC в сатоши
function toBTC(satoshi) {
return Number(satoshi) / 100000000;
}
console.log(toBTC(satoshiBalance)); // 21000000
// ID базы данных
const userId = BigInt('1234567890123456789');
console.log(userId.toString()); // '1234567890123456789'Реальные use cases: криптовалюта, ID баз данных.
Частые ошибки
**Неправильно:** Смешивать BigInt и Number в арифметике
**Почему:** 1n + 1 — TypeError. Нужно явно преобразовывать.
**Правильно:** BigInt(1) + 1n или Number(1n) + 1.
**Неправильно:** Использовать BigInt для дробных чисел
**Почему:** BigInt работает только с целыми. Для дробных — Number.
**Правильно:** BigInt = целые. Number = целые + дробные (с ограничением точности).
**Неправильно:** Забывать, что BigInt медленнее Number
**Почему:** BigInt — произвольная точность, что медленнее фиксированных 64-bit float.
**Правильно:** Используйте BigInt только когда Number недостаточен.
Важно запомнить
- BigInt: суффикс n или BigInt()
- Точнее Number для больших целых
- Нельзя смешивать BigInt и Number
- === всегда false (разные типы)
- Используйте только когда нужно
Связь
Назад: Вы знаете типы (J3) и числа (J21). BigInt расширяет систему чисел.
Вперёд: Следующий урок (JV19) — Intl — API интернационализации.