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
객체가 제공하는 메서드와 속성을 상속하지 않으며 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