BigInt

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