幂赋值(**=)

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® 2026 Language Specification
# sec-assignment-operators

浏览器兼容性

参见