Just looking at Douglas Crockford’s “JavaScript: The Good Parts” once again. One of the definitely Not Good parts is the NaN
value, supposedly standing for “Not a Number”.
Given that, what would you expect from typeof NaN
? Probably not 'number'
.
Even better:
NaN === NaN
gives false
NaN !== NaN
gives true
NaN
is not equal to itself!
And best of all, for some reason NaN
isn’t a constant, but a global variable. So if you want to change it to something else (e.g. NaN = 'fishcake'
) you can. Anyone who does should probably be shot, but the fact that it can be done at all is baffling.