Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2017年3月.
べき乗演算子 (**) は、1 つ目のオペランドを 2 つ目のオペランドで累乗した結果を返します。これは Math.pow() と同等ですが、オペランドとして長整数も受け入れます。
** 演算子は、数値と長整数の 2 種類のオペランドに対してオーバーロードされています。まず両オペランドを数値型に変換し、それらの型を検査します。両オペランドが長整数になった場合、長整数のべき乗を実行します。そうでない場合は数値のべき乗を実行します。一方のオペランドが長整数になり、もう一方が数値になった場合は、TypeError が発生します。
数値と長整数の両方において、 0 の正の累乗は 0 を返し、 0 の 0 乗は 1 を返します。数値の場合、 0 の負の累乗は Infinity を返し、 -0 の負の累乗は -Infinity を返します。
NaN ** 0(および同等の Math.pow(NaN, 0))は、数学操作において NaN が伝播しない唯一のケースです。オペランドが NaN であるにもかかわらず、結果は 1 を返します。さらに、 base が 1 で exponent が非有限数(±Infinity または NaN)の場合の挙動は IEEE 754 規格と異なります。規格では結果が 1 であるべきと指定しているのに対し、 JavaScript は後方互換性を維持するため NaN を返します。
長整数のべき乗では、指数 y が負の場合は RangeError が発生します。これらは、負の指数は(底が 1、-1、または 0 である場合を除き) 0 から 1 の間の値となる可能性が高く、丸め処理で 0 に変換されるため、開発者のミスである可能性が高いからです。
べき乗演算子は右結合です。 a ** b ** c は a ** (b ** c) と等しくなります。
PHP や Python など、べき乗演算子 (**) を持つほとんどの言語では、べき乗演算子は単項演算子(単項 + や単項 - など)よりも優先順位が高いと定義されていますが、いくつかの例外があります。例えば、Bash では ** 演算子は単項演算子よりも優先順位が低いと定義されています。
JavaScript では、あいまいなべき乗式を記述することはできません。 つまり、基数の直前に単項演算子(優先順位 14、+/-/~/!/++/--/delete/void/typeof/await)を置くことはできません。 これを行うと、SyntaxError が発生します。
例えば、-2 ** 2 は Bash では 4 ですが、それ以外の言語(Python など)では -4 です。これは JavaScript では演算子が曖昧であるため、無効な操作です。意図を明確にするには、いずれかの辺を括弧で囲む必要があります。例えば -(2 ** 2) のようにします。
なお、一部のプログラミング言語ではべき乗計算にキャレット記号 ^ を使用していますが、JavaScript ではこの記号をビット排他的論理和に使用しています。
その他の長整数以外の値は、数値に変換されます。
べき乗計算では、長整数と数値のオペランドを混在させることはできません。
べき乗を長整数と長整数以外の組み合わせで実行するには、どちらかのオペランドを変換してください。
べき乗式の結果の符号を反転させる例です。
べき乗式の基底を強制的に負の数にする例です。
| ECMAScript® 2027 Language Specification # sec-exp-operator |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2026年4月12日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.