| But none of those are actual issues with shops that are writing JS today (Literally: Zero items on that list). > Use of == does not do what it does in almost every other language, but won't flag an error if a user thinks if does. Instead very difficult to track bugs will be introduced. "==" does basically what it should... (I also avoid it, but it makes a perverted kind of sense for easing into programming) and the bugs introduced aren't difficult to track at all: literally find and replace "==" with "===" resolve places that became too strict, then make it a lint rule. >Calling nonexistent object keys won't flag an error but return None. I've seen this lead to weird errors that are hard to find a lot of times. This... is basic dictionary behavior across SO MANY LANGUAGES. Frankly - having worked with languages that make a missing key an exception (looking at you C#/C++) I'd take the JS route any day. > - Duck typing in a lot of operators like + and - can create unexpected results. Yes. This is programming. Have you seen Ruby (or python - or god help you custom operator implementations in c++)? Because holy fuck is JS reasonable as all get here when compared to some other popular languages. ---- > I obviously can't speak for anyone else, but I think those are the kind of things most people are referring to when they talk about js having problematic foundations. Basically - Look: I agree JS has some warts. Literally every language does. I just really don't see those warts as deserving of FUD around foundational problems that so many people talk about. |