Aqui está uma visão diferente sobre este tópico. É mais ou menos por experiência própria, não posso citar nada. Qualquer validador de JavaScript e todos que trabalham com JavaScript vão te dizer que
alert("hello World");
é um JavaScript válido. E eu também concordaria.
No entanto, um validador ECMAScript provavelmente dirá que não é válido, porque alert () não faz parte do ECMAScript, mas um recurso típico do JavaScript para navegadores. Existem muitos recursos do JavaScript, que só fazem sentido em um ambiente de navegador, fi window.navigator, window.document, WebSocket, navigator.geolocation. Alguns diriam até que isso não faz parte do JavaScript, mas sim do HTML5, o que não é verdade, porque o HTML5 é apenas a linguagem de marcação. No entanto, esses novos recursos sofisticados costumam ser chamados de HTML5, embora sejam implementados em JavaScript.
JavaScript também pode ser usado para scripts do lado do servidor. Então, toda a geolocalização ou apis de mídia não faz sentido. Portanto, o JavaScript para scripts do lado do servidor está muito mais próximo do ECMAScript novamente, que não tem esses recursos típicos de navegador.
Não consegui descobrir se o objeto Math (por exemplo, Math.sqrt (9)) faz parte do ECAMScript ou se o ECMAScript realmente apenas define a sintaxe da linguagem e não tem nenhuma funcionalidade incorporada. Mas um validador ECMAScript aceitou Math.sqrt (9) como ECMAScript válido, enquanto var test = window.document; falhou na validação ECMA.
Embora o link a seguir o vincule a uma documentação JavaScript, na minha opinião, este é o conjunto de recursos (objetos e funções) do ECMAScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / Global_Objects
Portanto, em minha opinião, o JavaScript está intimamente ligado aos navegadores, enquanto o ECMAScript tem apenas um conjunto muito básico de funcionalidades (se houver).