So here is part of the historical story on how we ended up with this mess of naming conflicts or intentional mix.
below diagram is some sort of an object oriented diagram (hope the abstraction makes sense) of how Ecma organization, the standard, ECMAScript and various dialects are related.
I always try to embrace and talk about the powerful features of the language like dynamic typing, closure, Lambda, and its prototype-based aspects which are design concepts and features brought from other languages like Scheme, Self, C and Java too which collectively may exceed the capability of those individual languages in certain scenarios.
Also there are some code analysis tools like JSLint that helps writing standard code that follow best practices and help eliminating using a language feature or construct that might cause problems at runtime.
I intentionally did not put any timeline or associated dates to when those different evolutionary steps happened to the language because there are many resources online and references that talk in depth of the history of the language. I listed below the resources that I used for this post in case your inner history nerd wants to dig into further details.