Javascript 如何使用属性值为NaN的should.js检查对象相等性

Javascript 如何使用属性值为NaN的should.js检查对象相等性,javascript,node.js,nan,should.js,Javascript,Node.js,Nan,Should.js,我认为这是由于NaN不等于自身,所以有一个特殊值NaN导致的should.js中的错误 ({ a: 1, c: 3, b: 2, d: NaN }).should.eql({ a: 1, c: 3, b: 2, d: NaN }); > NaN == NaN false 这个测试用例失败了,但很明显它应该通过 关于如何处理这个测试用例有什么建议吗?NaN的特殊之处在于它不等于它本身 ({ a: 1, c:

我认为这是由于NaN不等于自身,所以有一个特殊值NaN导致的should.js中的错误

({
    a: 1,
    c: 3,
    b: 2,
    d: NaN
}).should.eql({
    a: 1,
    c: 3,
    b: 2,
    d: NaN
});
> NaN == NaN
false
这个测试用例失败了,但很明显它应该通过


关于如何处理这个测试用例有什么建议吗?

NaN
的特殊之处在于它不等于它本身

({
    a: 1,
    c: 3,
    b: 2,
    d: NaN
}).should.eql({
    a: 1,
    c: 3,
    b: 2,
    d: NaN
});
> NaN == NaN
false

这不是一个bug
NaN
不等于任何值。有关更多信息,请参阅。

我在问题中说过这一点。我没问为什么。我问该如何处理这个bug。@Juno它不是bug。should.js应该对此保持明智,并单独检查NaN。这显然是should.js中的一个bug。@Juno不,那么按照这个逻辑,这是JavaScript中的一个bug<代码>南!==NaN@Juno你为什么这么做?这是should.js中的一个已知错误:(或者可能情况不同……嗯。)