最佳答案
我刚刚发现 ECMAScript 7的特性 a**b是 Math.pow(a,b)(MDN 参考资料)的替代品,并在 that post中遇到了一个讨论,在这个讨论中,它们的表现明显不同。我已经在 Chrome55中测试过了,可以确认结果是不同的。
返回 3.697296376497263e+197
然而呢
返回 3.697296376497268e+197
因此,记录差异 Math.pow(99,99) - 99**99导致 -5.311379928167671e+182。
到目前为止,我们可以说,它只是另一个实现,但是将它包装在一个函数中的行为又不同了:
function diff(x) {
return Math.pow(x,x) - x**x;
}
调用 diff(99)返回 0。
为什么会这样?
正如 Xszaboj指出的那样,这个问题可以缩小到以下几个方面:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182