Here is a different view on this topic. It's more or less from experience, I cannot quote anything.
Any JavaScript validator and everybody who works with JavaScript will tell you that
alert("hello World");
is valid JavaScript. And I'd also agree.
However, a ECMAScript validator will probably tell you it is not valid, because alert() is not part of the ECMAScript, but a typically feature of JavaScript for Browsers.
There are many features of JavaScript, which make only sense in a browser environment, f.i. window.navigator, window.document, WebSocket, navigator.geolocation.
Some would even say, this is not part fo JavaScript, but part of HTML5, which is not true, because HTML5 is just the markup language. However, these fancy new features are often called HTML5, even though they are implemented in JavaScript.
JavaScript can also be used for server side scripting. Then all the geolcation or media apis make no sense. So JavaScript for server side scripting is much closer to ECMAScript again, which doesn't have this typical browser features.
I couldn't really find out, whether the Math object (e.g. Math.sqrt(9)) is part of ECAMScript, or whether ECMAScript really just defines the syntax of the language and has no build in functionality whatsoever. But one ECMAScript validator accepted Math.sqrt(9) as valid ECMAScript, whereas var test=window.document; failed the ECMA validation.
Even though the following link it to a JavaScript documentation, this in my opinion is the build in feature set (objects and functions) of ECMAScript:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects
So in my opinion JavaScript is very closely tied to browsers, whereas ECMAScript has really only a very basic set of functionality (if at all).