John-David Dalton john.david.dalton at
Fri Dec 14 09:22:06 PST 2012

> But `myNaN === myNaN` is true if `myNaN = Object(NaN)`.

That's my point. Normally testing for NaN can be done via `myNaN !== myNaN`
but `Object(NaN)` throws a wrench in that.
It would be great if there was 1 function that was able to detect NaN,
instead of having libs step up and do it.


On Fri, Dec 14, 2012 at 9:12 AM, Nathan Wall <nathan.wall at> wrote:

> > Wat? This seems to be a good reason to allow `Object(NaN)` and use the
> > NumberWrapper brand as it cannot be tested via the normal way of
> > `myNaN !== myNaN`.
> But `myNaN === myNaN` is true if `myNaN = Object(NaN)`. Testing against
> the object is different. Nothing breaks.
>     var myNaN = Object(NaN);
>     [ 1, 3, myNaN ].indexOf(myNaN); // => 2
> Works as expected. The only problem which occurs is when you're working
> with primitive NaN, in which case the only existing good ways to test for
> it are `x !== x` and `typeof x == 'number' && isNaN(x)`. The purpose of
> `Number.isNaN` is to provide a way to test this case which is easier to
> read and understand. Note that if `x = Object(NaN)` both of these tests
> fail.
> Nathan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list