ES2016で実装された **
だが、
単項マイナス演算子が左辺にある場合、SyntaxErrorとなる。
2 ** 2 // 4
2 ** -2 // 0.25
-2 ** 2 // Uncaught SyntaxError: Unexpected token **
ESにおける演算子の優先順位が単項マイナス→べき乗で、
他の多くの言語(べき乗→単項マイナス)で得られる結果を期待すると混乱が起こるため、
この実装は理にかなっているように思う。
(-2) ** 2 // 4 単項マイナス→べき乗の順だとこうなるが…
-(2 ** 2) // -4 多くの言語ではこちらの実装になっている
演算子の優先順位 - JavaScript | MDN
Exponentiation operator precedence