Ecco una visione diversa su questo argomento. È più o meno per esperienza, non posso citare nulla. Qualsiasi validatore JavaScript e chiunque lavori con JavaScript te lo dirà
alert("hello World");
è JavaScript valido. E sono anche d'accordo.
Tuttavia, un validatore ECMAScript probabilmente ti dirà che non è valido, perché alert () non fa parte di ECMAScript, ma una caratteristica tipica di JavaScript per browser. Ci sono molte caratteristiche di JavaScript, che hanno senso solo in un ambiente browser, fi window.navigator, window.document, WebSocket, navigator.geolocation. Alcuni direbbero addirittura che questo non fa parte di JavaScript, ma parte di HTML5, il che non è vero, perché HTML5 è solo il linguaggio di markup. Tuttavia, queste nuove fantasiose funzionalità sono spesso chiamate HTML5, anche se sono implementate in JavaScript.
JavaScript può essere utilizzato anche per lo scripting lato server. Quindi tutta la geolocalizzazione o le API dei media non hanno senso. Quindi JavaScript per lo scripting lato server è molto più vicino a ECMAScript, che non ha queste caratteristiche tipiche del browser.
Non sono riuscito a scoprire se l'oggetto Math (ad esempio Math.sqrt (9)) fa parte di ECAMScript, o se ECMAScript definisce davvero solo la sintassi del linguaggio e non ha alcuna funzionalità incorporata. Ma un validatore ECMAScript accettava Math.sqrt (9) come ECMAScript valido, mentre var test = window.document; non ha superato la convalida ECMA.
Anche se il seguente link a una documentazione JavaScript, questo a mio parere è il set di funzionalità (oggetti e funzioni) di ECMAScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / Global_Objects
Quindi, a mio parere, JavaScript è strettamente legato ai browser, mentre ECMAScript ha in realtà solo un insieme di funzionalità di base (se non del tutto).