为什么Math.pow(1,NaN)等于JavaScript中的NaN?

时间:2013-02-18 13:49:22

标签: javascript

IEEE 754-2008部分"9.2.1 Special values"中提到了

  任何pow(+1, y)

1 y(即使是安静的NaN

如果不阅读整篇文档,维基百科会提供shortcut

  

2008版IEEE 754标准说pow(1, qNaN)和   pow(qNaN, 0)应返回1,因为它们会返回1其他内容   用而不是安静NaN

为什么JavaScript中的Math.pow(1, NaN)NaN?它不符合标准吗?

3 个答案:

答案 0 :(得分:5)

这是因为the ECMAscript specification似乎这么说。

  

pow(x,y)

     

返回将x提升为幂y的结果的依赖于实现的近似值。

     
      
  • 如果yNaN,则结果为NaN
  •   
  • ......其他限制......
  •   

答案 1 :(得分:2)

根据the Wikipedia articlepow定义在2008年被添加到IEEE 754.它也是可选的。

另一方面,ECMAScript的pow已被定义为返回NaN,如果第二个参数自NaN至少自1997年以来that year's standard的第15.8.2.13节中

似乎ECMA委员会选择保持与十多年的JavaScript兼容,而不是遵守IEEE特有的新建议。

答案 2 :(得分:1)

这是因为NaN是“非数字”,某种数学未定义。在数学1中,未定义的力量也是未定义的。