Aquí hay una vista diferente sobre este tema. Es más o menos por experiencia, no puedo citar nada. Cualquier validador de JavaScript y todos los que trabajen con JavaScript le dirán que
alert("hello World");
es JavaScript válido. Y también estoy de acuerdo.
Sin embargo, un validador de ECMAScript probablemente le dirá que no es válido, porque alert () no es parte de ECMAScript, sino una característica típica de JavaScript para navegadores. Hay muchas características de JavaScript, que solo tienen sentido en un entorno de navegador, fi window.navigator, window.document, WebSocket, navigator.geolocation. Algunos incluso dirían que esto no es parte de JavaScript, sino parte de HTML5, lo cual no es cierto, porque HTML5 es solo el lenguaje de marcado. Sin embargo, estas nuevas y elegantes funciones a menudo se denominan HTML5, aunque están implementadas en JavaScript.
JavaScript también se puede utilizar para secuencias de comandos del lado del servidor. Entonces toda la geolcation o media apis no tiene sentido. Por lo tanto, JavaScript para scripting del lado del servidor está mucho más cerca de ECMAScript nuevamente, que no tiene las características típicas del navegador.
Realmente no pude averiguar si el objeto Math (por ejemplo, Math.sqrt (9)) es parte de ECAMScript, o si ECMAScript realmente solo define la sintaxis del lenguaje y no tiene ninguna funcionalidad incorporada. Pero un validador de ECMAScript aceptó Math.sqrt (9) como ECMAScript válido, mientras que var test = window.document; falló la validación ECMA.
A pesar de que el siguiente enlace lo vincula a una documentación de JavaScript, en mi opinión, este es el conjunto de características integradas (objetos y funciones) de ECMAScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / Global_Objects
Entonces, en mi opinión, JavaScript está muy vinculado a los navegadores, mientras que ECMAScript tiene realmente solo un conjunto muy básico de funcionalidades (si es que tiene alguna).