我刚刚发现ECMAScript 7功能a**b作为Math.pow(a,b)(MDN参考)的替代方案,并且在该帖子中遇到了一个讨论,其中他们显然表现不同.我在Chrome 55中测试了它,可以确认结果有所不同.
Math.pow(99,99) 回报 3.697296376497263e+197
而
99**99 回报 3.697296376497268e+197
因此记录差异会Math.pow(99,99) - 99**99导致-5.311379928167671e+182.
到目前为止可以说,它只是另一种实现,但将它包装在一个函数中的行为又有所不同:
function diff(x) {
return Math.pow(x,x) - x**x;
}
Run Code Online (Sandbox Code Playgroud)
调用diff(99)返回0.
为什么会这样?
正如xszaboj指出的那样,这可以缩小到这个问题:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
Run Code Online (Sandbox Code Playgroud)