Voici un point de vue différent sur ce sujet. C'est plus ou moins par expérience, je ne peux rien citer. Tout validateur JavaScript et tous ceux qui travaillent avec JavaScript vous le diront
alert("hello World");
est un JavaScript valide. Et je suis également d'accord.
Cependant, un validateur ECMAScript vous dira probablement qu'il n'est pas valide, car alert () ne fait pas partie de ECMAScript, mais une fonctionnalité typique de JavaScript pour les navigateurs. Il existe de nombreuses fonctionnalités de JavaScript, qui n'ont de sens que dans un environnement de navigateur, fi window.navigator, window.document, WebSocket, navigator.geolocation. Certains diront même que cela ne fait pas partie de JavaScript, mais de HTML5, ce qui n'est pas vrai, car HTML5 n'est que le langage de balisage. Cependant, ces nouvelles fonctionnalités sophistiquées sont souvent appelées HTML5, même si elles sont implémentées en JavaScript.
JavaScript peut également être utilisé pour les scripts côté serveur. Ensuite, toutes les API de géolcation ou de médias n'ont aucun sens. Ainsi, JavaScript pour les scripts côté serveur est à nouveau beaucoup plus proche d'ECMAScript, qui n'a pas ces fonctionnalités de navigateur typiques.
Je ne pouvais pas vraiment savoir si l'objet Math (par exemple Math.sqrt (9)) faisait partie d'ECAMScript, ou si ECMAScript définit vraiment simplement la syntaxe du langage et n'a aucune fonctionnalité intégrée. Mais un validateur ECMAScript a accepté Math.sqrt (9) comme ECMAScript valide, alors que var test = window.document; a échoué la validation ECMA.
Même si le lien suivant vers une documentation JavaScript, il s'agit à mon avis de l'ensemble de fonctionnalités intégrées (objets et fonctions) d'ECMAScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / Global_Objects
Donc, à mon avis, JavaScript est très étroitement lié aux navigateurs, alors qu'ECMAScript n'a en réalité qu'un ensemble très basique de fonctionnalités (voire pas du tout).