> NaN == NaN false > NaN === NaN false > NaN !== NaN true >
Counterintuitively, it would seem that NaN does not equal NaN. But let’s think about this for a second. Is it really that strange or just a symptom of what the logical symbol NaN actually stands for?
Thing is, NaN stands for “Not a Number” and if memory serves comes right out of IEEE754 floating point arithmetic. It’s very handy for representing things like 0/0, different kinds of infinity and operations involving infinities. In short, it represents an undefinable number.
Now, what could possibly be the result of comparing two undefinable numbers?
Can anyone tell me if other languages handle this differently? Just produce an error of some sort?
You should follow me on twitter, here.