Actually true. And truer to the dynamic spirit of Javascript than ===. Sometimes things don't have to be absolutely equal to be equal, "1" and 1 will do just fine. You can sanitise at another level.
>Oh, you didn't wrap your all your code in an anonymous, self-calling function? You lose.
You loose nothing. You merely expose some names to the global namespace. Which might just be just one name, anyway, sans the anonymous self-calling function. (e.g
window.ns = {}, ns.doSomething = function() ...
>Oh, what you thought it was okay to leave off semicolons and var statements because they aren't required? Sorry.
Sorry for nothing much. A lot of people leave them off with no problem at all. The few edge cases are not unlike any other language's edge cases.
>Hmm, you didn't know how to manage dependencies between scripts? Should have studied harder.
Or not. If you got the result you want.
>You tried to iterate over an array? Ridiculous.
You probably mean the "for i in" idiom. Which is perfectly fine over an array. The only problem arises if someone has extended the Array prototype, which you shouldn't do anyway. And even that can be bypassed with one extra hasOwnProperty check. Not to mention it's solved in ES6.
>Your brain exploded when trying to write a series of asynchronous functions in continuation style? A pity, really.
Well, that's just because Node async style is amateur hour BS, like trying to do closures in C or logic programming in PHP. Doable, but not supported by the language. Use Go or Dart or Haskell or C# or Scala or Tornado etc for your async needs.