BigInt

ค่าดั้งเดิมของ 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 ที่ระบุ และไม่สามารถใช้กับเมธอดและออบเจ็กต์ Math ในตัวของ JavaScript ได้ สิ่งสำคัญที่สุดคือ คุณไม่สามารถใช้ BigInt และ Number พื้นฐานร่วมกันในการดำเนินงานทางคณิตศาสตร์มาตรฐาน

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

ในการคำนวณด้วย BigInt คุณต้องกำหนดตัวถูกดำเนินการทั้ง 2 รายการเป็นค่า BigInt ดังนี้

console.log( 9999999999999999 + 10 );  // Off by one
> 10000000000000010

console.log( 9999999999999999n + 10n );
> 10000000000000009n