I just got into webdev a year or so ago and on HN and other places the moral panic about JavaScript on the web is endless because some jerks are out there doing it wrong and everyone thinks of their US local news website (those are a mess) when they talk about it ... and they want to throw the baby out with the bathwater. Meanwhile I'm just trying to write some handy web apps that do it right but can't escape the "omg javascript" medium type articles.
I wonder if folks write some nasty stuff in C ... do people blame C?
To be fair, the language allows them to do it wrong by default with all that implicit type conversion and whatnot -- even in the original equality operator! You can write good JavaScript, but you have to purposefully avoid weird behavior that just isn't present in some other modern languages like Python and Ruby. JavaScript had a weird history, got expanded upon accidentally (i.e. through some browser vendor or another deciding to implement something) many times, and has always valued backwards compatability more than languages that feel comfortable expecting the user to install the relevant runtime.
> a = 100
> a is 100
True
> a = 1000
> a is 1000
FalseUntil Javascript removes the stupid from it's language, it will remain an embarrassment to developers. Completely inexcusable.
> Until Javascript removes the stupid from it's language, it will remain an embarrassment to developers. Completely inexcusable.
From that link:
> > typeof NaN
> > "number"
> > NaN == NaN
> > false
> > Ok, so the type of Not a Number is a number? And it also does not equal itself? Oh, well. Let’s try equality with other stuff.
Compliance with IEEE 754 is stupidity that is completely inexcusable? That NaN is non-reflexive is certainly irritating but a standards-compliant language is expected to adhere to that.