Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2020.
BigInt représente des valeurs entières qui sont trop élevées ou trop faibles pour être représentées par le type primitif number.
Une valeur BigInt, parfois simplement appelée BigInt, est un bigint primitif, créée en ajoutant un n à la fin d'un littéral d'entier, ou en appelant la fonction BigInt() (sans l'opérateur new) et en lui fournissant une valeur entière ou une chaîne de caractères.
Les valeurs BigInt sont similaires aux valeurs Number sur certains aspects, mais diffèrent aussi sur quelques points clés : les valeurs BigInt ne peuvent pas être utilisées avec les méthodes de l'objet natif Math et ne peuvent pas être mélangées avec des valeurs Number dans des opérations ; elles doivent être coercées au même type. Faites toutefois attention lors de la coercition entre ces types, car la précision d'une valeur BigInt peut être perdue lorsqu'elle est convertie en valeur Number.
Lorsqu'on utilise typeof sur une valeur BigInt, cet opérateur donnera "bigint" :
Un BigInt peut être également « enveloppé » dans un Object :
La plupart des opérateurs prennent en charge les BigInt, toutefois la plupart n'autorisent pas des opérandes de types mixtes — les deux opérandes doivent être des BigInt ou aucun ne doit l'être :
Les opérateurs qui retournent un booléen permettent de mélanger des valeurs Number et BigInt comme opérandes :
Quelques opérateurs ne prennent pas du tout en charge BigInt :
Cas particuliers :
Une valeur BigInt n'est pas strictement égal à une valeur Number, mais elle l'est vaguement :
Une valeur Number et une valeur BigInt peuvent être comparées comme en temps normal :
On peut également mélanger ces valeurs au sein de tableaux :
On notera que les comparaisons entre les valeurs BigInt et les mêmes valeurs, passées dans le constructeur Object(), ne seront pas équivalentes au sens strict :
Parce que la coercition entre des valeurs Number et des valeurs BigInt peut entraîner une perte de précision, il est recommandé :
Une valeur BigInt suit les mêmes règles de conversion que les valeurs Number dans les cas suivants :
Autrement dit, seule la valeur 0n est équivalent à faux ; toutes les autres sont équivalent à vrai.
Les opérations prises en charge pour les valeurs BigInt ne s'effectuent pas à temps constant et sont donc sujettes à des attaques temporelles. Aussi, BigInt ne saurait être utilisé à des fins cryptographiques.
L'utilisation de JSON.stringify() avec une valeur BigInt entraînera une exception TypeError, car ces valeurs ne sont pas sérialisées en JSON par défaut. Toutefois, JSON.stringify() laisse spécifiquement une porte dérobée pour les valeurs BigInt : il essaierait d'appeler la méthode toJSON() de BigInt. (Il ne le fait pas pour d'autres valeurs primitives.) Par conséquent, vous pouvez implémenter votre propre méthode toJSON() (ce qui est l'un des rares cas où la modification des objets intégrés n'est pas explicitement déconseillée) :
À la place de lever une exception, JSON.stringify() produit maintenant une chaîne de caractères comme celle-ci :
Si vous ne souhaitez pas modifier BigInt.prototype, vous pouvez utiliser le paramètre replacer de JSON.stringify pour sérialiser les valeurs BigInt :
Si vous avez des données JSON contenant des valeurs dont vous savez qu'il s'agit de grands entiers, vous pouvez utiliser le paramètre reviver de la méthode JSON.parse() pour les désérialiser :
Note : Bien qu'il soit possible de rendre le replacer de JSON.stringify() générique et de sérialiser correctement les valeurs BigInt pour tous les objets comme montré ci‑dessus, le reviver de JSON.parse() doit être utilisé avec prudence, car la sérialisation est irréversible : il n'est pas possible de distinguer entre un objet qui possède fortuitement une propriété appelée $bigint et un véritable BigInt.
De plus, l'exemple ci‑dessus crée un objet entier lors du remplacement et de la reconstitution, ce qui peut avoir des implications en matière de performance ou de stockage pour des objets plus volumineux contenant de nombreux BigInt. Si vous connaissez la structure de la charge utile, il peut être préférable de simplement les sérialiser sous forme de chaînes de caractères et de les reconstituer en fonction du nom de la clé de propriété.
En fait, JSON permet d'utiliser des nombres de longueur arbitraire ; mais ils ne peuvent pas être analysés avec une précision totale en JavaScript. Si vous communiquez avec un autre programme dans un langage qui prend en charge des entiers plus longs (comme les entiers 64 bits) et que vous souhaitez transmettre le BigInt sous la forme d'un nombre JSON plutôt que d'une chaîne de caractères JSON, voir Sérialisation des nombres sans perte.
Crée une nouvelle valeur BigInt.
Écrête une valeur BigInt en une valeur entière signée et renvoie cette valeur.
BigInt.asUintN()Écrête une valeur BigInt en une valeur entière non-signée et renvoie cette valeur.
Ces propriétés sont définies sur BigInt.prototype et sont partagées par toutes les instances de BigInt.
BigInt.prototype.constructorLa fonction constructeur qui a créé une instance de l'objet. Pour les instances BigInt, la valeur initiale est le constructeur BigInt.
BigInt.prototype[Symbol.toStringTag]La valeur initiale de la propriété [Symbol.toStringTag] est la chaîne de caractères "BigInt". Cette propriété est utilisée dans Object.prototype.toString(). Cependant, comme BigInt possède également sa propre méthode toString(), cette propriété n'est utilisée que si vous appelez Object.prototype.toString.call() avec un BigInt comme thisArg.
Renvoie une chaîne de caractères avec une représentation localisée de la valeur BigInt. Il s'agit d'une surcharge de la méthode Object.prototype.toLocaleString().
BigInt.prototype.toString()Renvoie une chaîne de caractères avec une représentation de la valeur BigInt dans la base donnée. Il s'agit d'une surcharge de la méthode Object.prototype.toString().
BigInt.prototype.valueOf()Renvoie la valeur BigInt. Il s'agit d'une surcharge de la méthode Object.prototype.valueOf().
Note : L'implémentation de isPrime() est uniquement destinée à la démonstration. Pour une application réelle, vous voudriez utiliser un algorithme fortement mémorisé tel que le Crible d'Ératosthène pour éviter les calculs répétés.
| ECMAScript® 2027 Language Specification # sec-bigint-objects |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 14 déc. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.