Numbers in JavaScript are represented as double-precision floats. This means they have limited precision. The Number.MAX_SAFE_INTEGER constant gives the greatest possible integer that can safely be incremented. 2^53=9,007,199,254,740,992
BigInts are a new numeric primitive in JavaScript that can represent integers with arbitrary precision. With BigInts, you can safely store and operate on large integers even beyond the safe integer limit for Numbers.
To create a BigInt, add the 'n' suffix to any integer literal. For example, 789 is Int and 789n is BigInt. The global BigInt(number) function can be used to convert a Number into a BigInt.
> BigInt(Number.MAX_SAFE_INTEGER)
// returns 9007199254740991n
For example, you can calculate MAX_SAFE_INTEGER to the power of two
> 9007199254740991n ** 2n
// returns 81129638414606663681390495662081n
For more detailed information and examples arbitrary-precision integers in JavaScript and BigInt - JavaScript | MDN