幂赋值(**=)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

幂赋值**=)对两个操作数执行幂运算,并将结果赋给左操作数。

尝试一下

let a = 3;

console.log((a **= 2));
// Expected output: 9

console.log((a **= 0));
// Expected output: 1

console.log((a **= 'hello'));
// Expected output: NaN

语法

js
x **= y

描述

x **= yx = x ** y 是等价的,不同之处在于前者的 x 只被计算一次。

示例

使用数字进行幂赋值

js
let bar = 5;
bar **= 2; // 25

其他非 BigInt 值会被强制转换为数字:

js
let baz = 5;
baz **= "foo"; // NaN

使用 BigInt 进行幂赋值

js
let foo = 3n;
foo **= 2n; // 9n
foo **= 1; // TypeError: Cannot mix BigInt and other types, use explicit conversions

规范

Specification
ECMAScript® 2025 Language Specification
# sec-assignment-operators

浏览器兼容性

BCD tables only load in the browser

参见