Ось інший погляд на цю тему. Це більш-менш з досвіду, я нічого не можу цитувати. Будь-який валідатор JavaScript і всі, хто працює з JavaScript, скажуть вам це
alert("hello World");
дійсний JavaScript. І я також погодився б.
Однак, валідатор ECMAScript, ймовірно, скаже вам, що він недійсний, тому що alert () не є частиною ECMAScript, а зазвичай є функцією JavaScript для браузерів. Існує багато функцій JavaScript, які мають сенс лише в середовищі браузера, fi window.navigator, window.document, WebSocket, navigator.geolocation. Дехто навіть сказав, що це не частина JavaScript, а частина HTML5, що не відповідає дійсності, оскільки HTML5 - це лише мова розмітки. Однак ці фантазійні нові функції часто називають HTML5, навіть якщо вони реалізовані в JavaScript.
JavaScript також може використовуватися для сценаріїв на стороні сервера. Тоді всі geolcation або media apis не мають сенсу. Отже JavaScript для сценаріїв на стороні сервера знову набагато ближче до ECMAScript, який не має таких типових функцій браузера.
Я не міг реально дізнатися, чи є об'єкт Math (наприклад, Math.sqrt (9)) частиною ECAMScript, чи ECMAScript насправді просто визначає синтаксис мови і не має ніяких вбудованих функціональних можливостей. Але один валідатор ECMAScript прийняв Math.sqrt (9) як дійсний ECMAScript, тоді як var test = window.document; не вдалося перевірити ECMA.
Незважаючи на те, що наступне посилання посилається на документацію JavaScript, це, на мою думку, є набором функцій (об'єктів та функцій) ECMAScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference / Global_Objects
Отже, на мою думку, JavaScript дуже тісно пов'язаний з браузерами, тоді як ECMAScript насправді має лише дуже базовий набір функціональних можливостей (якщо він є).