在IEEE 754-2008部分“9.2.1 特殊值”中提到
pow(+1, y)适用1于任何y(甚至是安静的NaN)
对于不阅读整个文档 Wikipedia 提供了快捷方式:
IEEE 754 标准的 2008 版本表示
pow(1, qNaN)并且pow(qNaN, 0)都应该返回1,因为它们返回1使用的任何其他内容而不是 quietNaN。
Math.pow(1, NaN)那么为什么NaN在 JavaScript 中呢?不符合标准吗?
在IEEE 754-2008部分“9.2.1 特殊值”中提到
pow(+1, y)适用1于任何y(甚至是安静的NaN)
对于不阅读整个文档 Wikipedia 提供了快捷方式:
IEEE 754 标准的 2008 版本表示
pow(1, qNaN)并且pow(qNaN, 0)都应该返回1,因为它们返回1使用的任何其他内容而不是 quietNaN。
Math.pow(1, NaN)那么为什么NaN在 JavaScript 中呢?不符合标准吗?
这是因为ECMAscript 规范似乎是这么说的。
pow (x, y)
返回
x对乘方结果的依赖于实现的近似值y。
- 如果
y是NaN,结果是NaN。- ...其他限制...
根据Wikipedia 文章,该pow定义于 2008 年添加到 IEEE 754。它也是可选的。
另一方面,如果第二个参数至少是从 1997 年开始,则 ECMAScriptpow已被定义为返回,该年标准的第 15.8.2.13 节。NaNNaN
似乎 ECMA 委员会选择保持与十多年的 JavaScript 的兼容性,而不是遵守 IEEE 的特殊新建议。
这是因为 NaN 是“非数字”,某种数学上的未定义。在数学 1 中,未定义的幂也是未定义的。