Dữ liệu gốc BigInt là một phần bổ sung tương đối mới đối với
JavaScript, cho phép các phép toán với các số nằm ngoài phạm vi
được Number
cho phép. Để tạo BigInt, hãy thêm n
vào cuối số
cố định hoặc truyền một giá trị chuỗi số nguyên hay số vào hàm BigInt()
.
const myNumber = 9999999999999999;
const myBigInt = 9999999999999999n;
typeof myNumber;
> "number"
typeof myBigInt;
> "bigint"
myNumber;
> 10000000000000000
myBigInt;
> 9999999999999999n
Trong ví dụ này, 9999999999999999
nằm ngoài phạm vi chữ số có thể được
được trình bày an toàn bằng Number
, gây ra lỗi làm tròn.
Các giá trị BigInt không kế thừa các phương thức và thuộc tính của đối tượng Number
cung cấp và không thể sử dụng với các phương thức Math
tích hợp của JavaScript
mà đối tượng cung cấp. Quan trọng nhất là bạn không thể kết hợp dữ liệu gốc BigInt và Number vào
phép tính số học chuẩn:
9999999999999999n + 5
> Uncaught TypeError: can't convert BigInt to number
Để tính toán số học với BigInt, bạn phải xác định cả hai toán hạng dưới dạng giá trị BigInt:
console.log( 9999999999999999 + 10 ); // Off by one
> 10000000000000010
console.log( 9999999999999999n + 10n );
> 10000000000000009n