NaN is contagious - Robust Client-Side JavaScript
NaN is a dangerous beast. NaN is a special value that means “not a number”, but in fact it is a number you can calculate with.
NaN is contagious. All calculations involving NaN fail silently, yielding NaN:
5 + NaNmakes NaN,Math.sqrt(NaN)produces NaN. All comparisons with NaN yield false:5 > NaNis false,5 < NaNis also false.5 === NaNis false,NaN === NaNis also false.If a NaN slips into your logic, it is carried through the rest of the program until the user sees a “NaN” appearing in the interface. It is hard to find the cause of a NaN since the place where it appears can be far from the place that caused it. Typically, the cause of a NaN is an implicit type conversion. My advice is to raise the alarm as soon as you see a NaN.
Quoted content by Mathias Schäfer is licensed under CC BY-SA. See the other snippets from Robust Client-Side JavaScript.