我想知道为什么undefined == undefined但是NaN != NaN.
use*_*716 11
因为它是在抽象等式比较算法和严格等式比较算法中定义的.
如果操作数为==或者===是NaN,则返回false.
抽象
- 如果Type(x)是Number,那么
- 如果x是NaN,则返回false.
- 如果y是NaN,则返回false.
- 如果x与y的Number值相同,则返回true.
- 如果x是+0且y是-0,则返回true.
- 如果x是-0且y是+0,则返回true.
- 返回false.
编辑:@CMS指出的不平等比较的动机是符合IEEE 754标准.
来自以下评论中提供的维基百科链接:
...然而,正常的比较操作将NaN视为无序,并将-0和+ 0相等.totalOrder谓词将对这些情况进行排序,并且它还区分NaN的不同表示以及以不同方式编码的相同十进制浮点数之间.
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |