BigInt

Dữ liệu gốc BigInt là một bổ sung tương đối mới cho JavaScript, cho phép thực hiện các phép toán trên 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 một số theo giá trị cố định, hoặc truyền một giá trị chuỗi số nguyên/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 biểu thị 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 mà đối tượng Number cung cấp, đồng thời bạn không thể sử dụng các giá trị này với các phương thức mà đối tượng Math tích hợp của JavaScript cung cấp. Quan trọng nhất là bạn không thể kết hợp các dữ liệu gốc BigInt và Số trong các phép toán số học chuẩn:

9999999999999999n + 5
> Uncaught TypeError: can't convert BigInt to number

Để tính toán bằng BigInts, 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