First of all, the proliferation of JS is well-understood. JS is ubiquitous, available in all web browsers. JS is easy to pick up because there is no setup required; you just start writing code and execute it in the browser. JS is a light language (at least, it was light) that does not overwhelm beginners. JS has a number of popular frameworks and libraries, such as jQuery and Angular.
I do not call for the abandonment of JS. In fact, you can’t abandon it because of the web’s reliance on this language. What I do call for is using JS as a sort of “assembly language” to which other, better languages can transpile. I hammer this point home in article after article after article here.
I do not deny that there are many production-grade web applications. There are many unknowns, however, that businesses are loathe to reveal to the public. How reliable are these applications? How many defects do they contain? How much downtime do they suffer as a consequence of reliability issues? How much difficulty do they have maintaining their code bases? How long did it take to deliver the software? What kinds of delays were there? And how much of this is attributable to the fact that JS is an inferior software engineering tool?
Could they have done better with a better language? Could they have saved opportunity costs with a shorter “time to market?” We’d be wise to follow conventional wisdom and adhere to solid engineering principles, rather than pursue programming fashion like transfixed teenagers rocking social media.