BigInt

BigInt 프리미티브는 JavaScript에 비교적 새로운 추가 기능으로, Number에서 허용되는 범위 밖의 숫자에 대한 수학적 연산이 가능합니다. BigInt를 만들려면 숫자 리터럴의 끝에 n를 추가하거나 정수 또는 숫자 문자열 값을 BigInt() 함수에 전달합니다.

const myNumber = 9999999999999999;
const myBigInt = 9999999999999999n;

typeof myNumber;
> "number"

typeof myBigInt;
> "bigint"

myNumber;
> 10000000000000000

myBigInt;
> 9999999999999999n

이 예에서 9999999999999999Number로 안전하게 표시할 수 있는 자릿수 범위를 벗어났으므로 반올림 오류가 발생합니다.

BigInt 값은 Number 객체가 제공하는 메서드와 속성을 상속하지 않으며 JavaScript의 기본 제공 Math 객체에서 제공하는 메서드와 함께 사용할 수 없습니다. 가장 중요한 점은 표준 산술 연산에서 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