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 למספרים פעולות אריתמטיות רגילות:

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