RangeError: BigInt 负指数
当 BigInt
被提升到负 BigInt 值的幂时,会发生 JavaScript 异常 "BigInt 负指数"。
消息
RangeError: Exponent must be positive (V8-based) RangeError: BigInt negative exponent (Firefox) RangeError: Negative exponent is not allowed (Safari)
错误类型
发生了什么错误?
指数运算操作的指数必须为正。由于负指数会取底数的倒数,因此在几乎所有情况下,结果都会介于 -1 和 1 之间,这将四舍五入为 0n
。为了避免错误,不允许使用负指数。在进行指数运算之前,请检查指数是否为非负数。
示例
使用负 BigInt 作为指数
js
const a = 1n;
const b = -1n;
const c = a ** b;
// RangeError: BigInt negative exponent
相反,请先检查指数是否为负数,然后要么发出带有更佳消息的错误,要么回退到其他值,例如 0n
或 undefined
。
js
const a = 1n;
const b = -1n;
const quotient = b >= 0n ? a ** b : 0n;