JavaScript has certainly improved a lot over the years and ES6 certainly makes JS a stronger opponent. Just like with PHP, JS has some quirks and inconsistencies which in my eyes makes it less suitable for serious application development - you can certainly write large applications in JS, maintaining it is often a nightmare as I've seen at several large companies who've made the switch to NodeJS, React, Backbone and an alphabet soup of JS frameworks / plugins in the last couple of years.
Compared to companies running Java / .NET systems, these now-JS companies seems to have a lot more developers dedicated to bug fixing whereas the Java / .NET companies I've observed spend a lot less time debugging and throw a lot less resources at hunting down production issues - this is just my observation observing a dozen or so companies.
Dart I believe hits the sweet spot even if it's transpiled to JS, it gives you the productivity you get with JS minus the quirks. Often times in production systems (from my experience) where you have JavaScript, PHP and Java, you'd immediately see if there's a problem with the Java code (Java is very verbal if anything is not right), the JS and PHP tries to be smart and obscures the problem making it very difficult to hunt down or often times does illogical things when given strange inputs.
From experience, a 200k lines of JavaScript is much harder to maintain than 200k lines of Dart and Java, I believe it has to with the lack of a compile step that checks if everything is ok.
The fact that you can declare a function like this in JS function blah(a, b){...}
and then call blah("a") or blah(1, "2", 3, 4, function(){...}) or even `blah(function(){}) to me is a serious concern.
I leave you with wtfjs.com