Movatterモバイル変換


[0]ホーム

URL:


  1. 面向开发者的 Web 技术
  2. JavaScript
  3. JavaScript 参考
  4. 表达式和运算符
  5. 幂(**)

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in EnglishAlways switch to English

幂(**)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2017年3月⁩.

**)运算符返回第一个操作数取第二个操作数的幂的结果。它等价于Math.pow(),不同之处在于,它还接受BigInt 作为操作数。

尝试一下

console.log(3 ** 4);// Expected output: 81console.log(10 ** -2);// Expected output: 0.01console.log(2 ** (3 ** 2));// Expected output: 512console.log((2 ** 3) ** 2);// Expected output: 64

语法

js
x ** y

描述

幂运算符是右结合的:a ** b ** c 等于a ** (b ** c)

在大多数语言里,比如 PHP、Python 等那些有幂运算符(**)的语言,幂运算符被定义有一个比一元运算符,比如一元的+ 和一元的- 更高的运算顺序,但有一些例外。在 Bash 语言里,** 运算符被定义有一个比一元运算符更低的运算顺序。

在 JavaScript 中,不可能写出模棱两可的幂表达式。也就是说,你不能将一元运算符(+/-/~/!/delete/void/typeof)放在底数之前;这样做会导致语法错误

例如,-2 ** 2 在 Bash 中为 4,但在其他语言(如 Python)中为 -4。这在 JavaScript 中是无效的,因为操作不明确。你必须在两边加上括号——例如,作为-(2 ** 2)——以使意图明确。

请注意,某些编程语言使用插入符号^ 进行求幂,但 JavaScript 使用该符号表示逻辑异或运算符

NaN ** 0(和等价的Math.pow(NaN, 0))是NaN 不通过数学运算传播的唯一情况——尽管操作数是NaN,但它返回1。此外,base 为 1 且exponent 为非有限(±Infinity 或NaN)的行为与 IEEE 754 不同,IEEE 754 指定结果应为 1,而 JavaScript 返回NaN 以保持与其原始行为的向后兼容性。

示例

基本求幂

js
2 ** 3; // 83 ** 2; // 93 ** 2.5; // 15.58845726811989610 ** -1; // 0.1NaN ** 2; // NaNNaN ** 0; // 11 ** Infinity; // NaN

结合性

js
2 ** 3 ** 2; // 5122 ** (3 ** 2); // 512(2 ** 3) ** 2; // 64

与一元运算符一起使用

取幂表达式的值的相反数:

js
-(2 ** 2); // -4

将幂表达式的底数转化为一个负数:

js
(-2) ** 2; // 4

规范

Specification
ECMAScript® 2026 Language Specification
# sec-exp-operator

浏览器兼容性

参见

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp