It’s mainly horrid, because it means you have to code extremely defensively (or I guess, use a different API).
You can’t rely on newDate("not a date") aborting execution of your function by throwing an error. Instead, you have to know that it can produce an InvalidDate object and check for that. Otherwise a random NaN shows up during execution, which is gonna be extremely fun to try to find the source of.
I understand that it’s implemented like that partially for historical reasons, partially because it’s often better to display “NaN” rather than nothing, but it’s still the sort of behavior that puts me in a cold sweat, because I should be memorizing all kinds of Best Practices™ before trying to code JavaScript.
It’s mainly horrid, because it means you have to code extremely defensively (or I guess, use a different API).
You can’t rely on
new Date("not a date")
aborting execution of your function by throwing an error. Instead, you have to know that it can produce anInvalid Date
object and check for that. Otherwise a randomNaN
shows up during execution, which is gonna be extremely fun to try to find the source of.I understand that it’s implemented like that partially for historical reasons, partially because it’s often better to display “NaN” rather than nothing, but it’s still the sort of behavior that puts me in a cold sweat, because I should be memorizing all kinds of Best Practices™ before trying to code JavaScript.