JS.next

JavaScriptの最新実装情報を追うブログ

べき乗演算子が実装された

概要

Math.pow関数の代わりに新しい演算子「 ** 」でべき乗の演算ができるようになった。


これが

n = Math.pow(3, 2)
console.log(n)  // 9

n = Math.pow(n, 2)
console.log(n)  // 81

こう書ける

n = 3 ** 2
console.log(n)  // 9

n **= 2
console.log(n)  // 81


問題

これはどうなるだろうか?

console.log( - 3 ** 2 )

答えは『 SyntaxError 』である。
「 - 3 ** 2 」は「 (- 3) ** 2 」と「 - (3 ** 2) 」のどちらで評価されるか予想しづらい。
それは他の単項演算子についても言えるので、べき乗演算子の左辺に単項演算子が用いられた式を置くことは禁止されている。
そのため、左辺に単項マイナス演算子を使いたい場合は下記のように括弧で囲む必要がある。

console.log( (- 3) ** 2 )  // 9
console.log( - (3 ** 2) )  // -9


実装されるバージョン

V8 5.1.173