RangeError: BigInt negative exponent

L'exception JavaScript "BigInt negative exponent" se produit lorsqu'une valeur BigInt est élevée à une puissance négative exprimée avec une valeur BigInt.

Message

RangeError: Exponent must be positive (moteur JavaScript basé sur V8)
RangeError: BigInt negative exponent (Firefox)
RangeError: Negative exponent is not allowed (Safari)

Type d'erreur

Quel est le problème ?

L'exposant utilisé pour une opération d'exponentiation doit être positif. Un exposant négatif conduirait à prendre un inverse de la base, le résultat sera alors compris entre -1 et 1 pour presque tous les cas, ce qui finirait arrondi en 0n. Pour éviter de tels problèmes, les exposants négatifs ne sont pas autorisés. Vérifiez le signe de l'exposant avant de réaliser l'exponentiation.

Exemples

Utiliser un grand entier négatif comme exposant

js
const a = 1n;
const b = -1n;
const c = a ** b;
// RangeError: BigInt negative exponent

À la place, on vérifiera au préalable si l'exposant est négatif, si c'est le cas, on produira un message d'erreur plus spécifique ou on utilisera une valeur alternative comme 0n ou undefined.

js
const a = 1n;
const b = -1n;
const quotient = b >= 0n ? a ** b : 0n;

Voir aussi