双星号**是有效的JavaScript运算符吗?

双星号**是有效的JavaScript运算符吗?,javascript,math,operators,Javascript,Math,Operators,我解决了一个关于CodeWars的kata问题,并且正在查看其他一些解决方案,这时我遇到了双星号,它象征着代码的力量。我做了一些研究,可以看出这在python中是一个有效的运算符,但在JavaScript文档中看不到任何关于它的内容 var findNb = m => { var n = Math.floor((4*m)**.25); var sum = x => (x*(x+1)/2)**2; return sum(n) == m ? n : -1; } 然而,当我在

我解决了一个关于CodeWars的kata问题,并且正在查看其他一些解决方案,这时我遇到了双星号,它象征着代码的力量。我做了一些研究,可以看出这在python中是一个有效的运算符,但在JavaScript文档中看不到任何关于它的内容

var findNb = m =>
{
  var n = Math.floor((4*m)**.25);
  var sum = x => (x*(x+1)/2)**2;
  return sum(n) == m ? n : -1;
}

然而,当我在CodeWars上运行这个解决方案时,它似乎起了作用。我想知道这在ES6中是否是新的,尽管我没有发现任何关于它的信息。

**
是在ECMAScript 2016(ES7)中引入的。但请记住,并不是所有javascripts环境都实现它(例如,InternetExplorer不支持它)

如果你想成为跨浏览器,你必须使用
Math.pow

Math.pow(4, 5)

**
求幂运算符,与
Math.pow
等价

它是在ECMAScript 2016(ES7)中引入的


有关详细信息,请参阅《探索ES2016》中的和

**
运算符是ES7中的有效运算符。它与
Math.pow(x,y)
例如,
2**3
Math.pow(2,3)

以下是维基百科的详细信息

ES7中添加了两个新功能:

求幂运算符(**)和Array.prototype.includes


你可以在这里玩这个

^^^^^^^事实上,它会抛出
未捕获的SyntaxError:Unexpected token*(…)
这个答案取决于你使用的是哪个ECMAScript版本,因为它对于ES7是错误的,正如Thomas指出的,这个答案在发布时可能是正确的,但现在是错误的。应该对其进行编辑,以提及
**
不存在/不存在的JavaScript版本。
**
是粗体的标记指示器。这可能是作者在编写降价答案时出现的语法错误。发件人:乘法运算符:*/%@Grundy中的一个他也在使用胖箭头,所以它可能在ES6规范中。在ES7规范中。我对代码战一无所知,但如果您使用的是大约,我刚才看了codewars,他们所有的代码都是通过BabelJS运行的,这解释了为什么这段代码与ES6和ES7操作符一起工作。