Why is NaN === NaN false? [duplicate]
Solution 1:
Strict answer: Because the JS spec says so:
- If Type(x) is Number, then
- If x is NaN, return false.
- If y is NaN, return false.
Useful answer: The IEEE 754 spec for floating-point numbers (which is used by all languages for floating-point) says that NaNs are never equal.
Solution 2:
This behaviour is specified by the IEEE-754 standard (which the JavaScript spec follows in this respect).
For an extended discussion, see What is the rationale for all comparisons returning false for IEEE754 NaN values?
Solution 3:
Although either side of NaN===NaN
contains the same value and their type is Number
but they are not same. According to ECMA-262, either side of ==
or ===
contains NaN
then it will result false value.
you may find a details rules in here-
http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3