Яка різниця між JavaScript та ECMAScript?


462

Яка різниця між ECMAScript і JavaScript? З того, що я вивів, ECMAScript є стандартом, а JavaScript - реалізацією. Це правильно?

Відповіді:


183

ECMAScript є мовою, тоді як JavaScript, JScript і навіть ActionScript 3 називають "діалектами". Вікіпедія проливає на це трохи світла.


9
що було б дуже добре - це чітке відображення версій JavaScript та версій ECMAScript, наприклад, ES5 відповідає JS1.5 і т. д. ах, я знайшов це: en.wikipedia.org/wiki/JavaScript#Versions
Сем Йосиф

2
@Sam - оновлення посилання Сама: en.wikipedia.org/wiki/JavaScript#Version_history
Rop

65
Ян Лі прихильний і прихильний, оскільки ця відповідь говорить дуже мало і в основному вказує вам на Вікіпедію. Відповідь Ян Лі набагато детальніше та корисніша. Також те, чи є одна мова / стандартна, а інша - діалект, чи реалізація тощо, є відкритим для думки, а не факту, як я розумію. В той час як з цієї відповіді видно, що це факт. Виправте мене, якщо я помиляюся. Насправді я б заперечував, що пропозиція цієї відповіді навіть не є загальнодоступною консенсусом. Як бачать більшість, ECMAScript має стандарт та JavaScript як мову.
redfox05

1
@Rop - Оновіть це посилання: en.wikipedia.org/wiki/ECMAScript#Version_cor
кореспонденція

5
Я не погоджуюсь. ECMAScript - це специфікація. JS, JScript, ActionScript - це мови, які реалізують таку специфікацію.
adripanico

611

Я думаю, що ще невеликий урок історії.

JavaScript спочатку називався Mocha і був змінений на Livescript, але зрештою став JavaScript.

Важливо зауважити, що JavaScript був перед ECMAскриптом, і історія розповість вам, чому.

Щоб почати спочатку, JavaScript отримав свою назву від Java і спочатку Брендан Ейх (творець JS) попросив розробити мову, що нагадує Java для Інтернету для Netscape.

Однак Ейх вирішила, що Java занадто складна з усіма її правилами, і надумала створити більш просту мову, яку міг би кодувати навіть початківець. Це очевидно в таких речах, як розслаблення необхідності мати крапку з комою.

Після того, як мова була повністю, маркетингова команда Netscape попросила Sun дозволити їм назвати JavaScript як маркетинговий трюк, і тому більшість людей, які ніколи не використовували JavaScript, вважають, що це пов'язано з Java.

Приблизно через рік-два після виходу JavaScript у браузері IE Майкрософт взяв мову і почав робити власні реалізації, такі як JScript. У той же час IE домінував на ринку і незабаром після того, як Netscape довелося закрити свій проект.

Перед тим, як Netscape знизився, вони вирішили запустити стандарт, який керуватиме шлях JavaScript, іменований ECMAScript.

У ECMAScript було декілька випусків, і в 1999 році вони випустили останню версію (ECMAScript 3), перш ніж вони перейшли у сплячку протягом наступних 10 років. Протягом цих 10 років Microsoft домінувала над сценами, але в той же час вони не вдосконалювали свій продукт, отже, народився Firefox (під керівництвом Eich) та цілу купу інших браузерів, таких як Chrome, Opera.

ECMAScript випустив своє 5-е видання у 2009 році (4-е видання було залишене) з такими функціями, як жорсткий режим. З тих пір ECMAScript набрав велику силу і планується випустити своє 6-е видання за кілька місяців, з найбільшими змінами, які відбулися до цього часу.

Ви можете використовувати список функцій для ECMAScript 6 тут http://kangax.github.io/es5-compat-table/es6/, а також підтримку браузера. Ви навіть можете почати писати Ecmascript 6, як це робиться з CoffeeScript, і використовувати компілятор для компіляції до Ecmascript 5.

Чи мовою ECMAScript є мова, а JavaScript - діалект, можна сперечатися, але це не важливо. Якщо ви продовжите думати так, це може вас збентежити. Там немає компілятора, який би запускав ECMAScript, і я вважаю, що JavaScript вважається мовою, яка реалізує стандарт, який називається ECMAScript.

Існують також інші помітні мови, які реалізують ECMAScript, такі як ActionScript (використовується для Flash)


1
Для тих, хто цікавиться, як скласти / перекласти новий стандарт ES2015 до коду ECMAScript 5, ви захочете перевірити Babel (раніше 6to5), доступний на babeljs.io, або traceur на github.com/google/traceur-compiler . Якщо ці інструменти доступні, немає жодної причини, що ви не можете почати писати "новий JavaScript" прямо зараз і скористатися усіма останніми доповненнями до мови.
LWurm

1
Мені не було відомо, що Lua реалізує ECMAScript. Я не можу знайти щось, що це підтверджує. Яке джерело?
battlemanz

2
@YangLi Чи погоджуєтесь ви з відповіддю jerone нижче, що мови ECMAScript не містять API DOM, який ми всі використовуємо при написанні чистого JavaScript?
theJollySin

11
@theJollySin Так, він прав. ECMAScript не був розроблений спеціально для браузера, тому такі методи, як document.getElementById та інші DOM API не є частиною стандарту. Вони належать до стандартів WHATWG, поряд з деяким іншим конкретним браузерним методом, наприклад localStorage тощо. Якщо ви приймаєте вузол і не користуєтесь імпортованими модулями, у вас є API лише ECMAScript.
Ян Лі

1
Як кілька мов можуть реалізовувати один і той же стандарт і не бути однаковою мовою? Стандарт визначає мову. Якщо деяка мова реалізує стандарт C ++, він називається C ++, а не щось інше (саме тому , що він реалізує цей стандарт). Тож у мене все одно те питання ... в чому різниця?
Нема

157

ECMAScript = ES:

  • ECMAScript - це стандарт для мов сценаріїв.

  • Такі мови, як Javascript, базуються на стандарті ECMAScript.

  • Стандарт ECMA заснований на кількох оригінальних технологіях, найбільш відомими є JavaScript (Netscape) та JScript (Microsoft).

  • ECMA означає Асоціацію європейських виробників комп'ютерів

JavaScript = JS:

  • JavaScript - найпопулярніша реалізація стандарту ECMAScript.

  • Основні особливості Javascript засновані на стандарті ECMAScript, але Javascript також має інші додаткові функції, які не входять до специфікацій / стандарту ECMA.

  • ActionScript і JScript - інші мови, які реалізують ECMAScript.

  • JavaScript був поданий до ECMA для стандартизації, але через проблеми з товарними знаками з назвою Javascript стандарт став називатися ECMAScript.

  • У кожному браузері є інтерпретатор JavaScript.

ES5 = ECMAScript 5:

  • ES5 - це версія ECMAScript (стара / поточна).

  • ES5 - це JavaScript, який ви знаєте та використовуєте в браузері сьогодні.

  • ES5 не вимагає кроку збирання (транспіляторів), щоб перетворити його на те, що працюватиме в сучасних браузерах.

  • Версія 5 ECMAScript була завершена у грудні 2009 року, останні версії всіх основних браузерів (Chrome, Safari, Firefox та IE) впровадили версію 5.

  • Версія 5.1 була завершена в червні 2011 року.

ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:

  • ES2015 - це версія ECMAScript (нова / майбутня).

  • Офіційно назву ES2015 слід використовувати замість ES6.

  • ES6 вирішить багато недоліків основної мови, вирішених у TypeScript та CoffeeScript.

  • ES6 - це наступна ітерація JavaScript, але вона не працює в сучасних браузерах.

  • Існує досить багато транспіляторів, які експортуватимуть ES5 для роботи в браузерах.

BabelJS:

  • BabelJS - найпопулярніший транспілятор, який перетворює новий JavaScript ES6 в Old JavaScript ES5.

  • BabelJS дозволяє сьогодні написати нове покоління JavaScript (означає ES2015).

  • BabelJS просто бере файл ES2015 і перетворює його у файл ES5.

  • Поточні версії браузерів тепер можуть зрозуміти новий код JavaScript (ES2015), навіть якщо вони ще не підтримують його.

TypeScript і CoffeeScript:

  • Обидва надають синтаксичний цукор поверх ES5, а потім перекомпілюються в JavaScript, сумісний з ES5. 

  • Ви пишете TypeScript або CoffeeScript, тоді транспілер перетворює його в ES5 JavaScript.


3
Javascript також є інші додаткові функції, які відсутні в специфікаціях / стандарті ECMA ". Чи можете ви надати кілька прикладів цих функцій?
Аруна Герат

1
" JavaScript - це найпопулярніша реалізація стандарту ECMAScript. " Тоді де я можу знайти джерело цієї реалізації під назвою "JavaScript"?
bzeaman

7
Своїм запитанням я намагаюся зазначити потенційну неправильність у формулюванні відповіді. Вживається слово "реалізація". Як кажуть, JavaScript є "найпопулярнішою реалізацією ". Реалізація - це " реалізація технічної специфікації". Що перекладається на програмне забезпечення . Тоді мені цікаво, де це програмне забезпечення під назвою "JavaScript".
bzeaman

4
@Corrodias Я б погодився, це відчуває, як збирання ніт, але я думаю, що це розумно робити, коли відповідь стосується визначення речей. JavaScript - це мова, сьогодні стандартизована за допомогою ECMAscript, порівнянна з тим, як C - це мова, стандартизована стандартами ISO. Термін для JavaScript тоді буде просто "мова", не більше того.
bzeaman

4
Підсумки ES5, ES2015 та BabelJS дійсно очищають ефір від безлічі плутань, які можуть виникнути, коли він приземлиться в сьогоднішній світ сценаріїв JS від серверного програмування. Чудова відповідь. +1
RBT

45

JavaScript = ECMAScript + DOM + BOM ;

  • Специфікація мови ECMAScript® визначає всю логіку створення та редагування об'єктів, масивів, чисел тощо ...

  • DOM ( D ocument O bject M odel) дає можливість спілкуватися з HTML / XML документами (наприклад document.getElementById('id');).

  • ВВП ( Б rowser висновок ▪ Таблиця М Odel) є ієрархією об'єктів браузера (наприклад , об'єкт розташування, історії об'єкта, утворюють елементи).

Історія іменування JavaScript:

Mocha ► LiveScript ► JavaScript ► (частина JS призвела до) ECMA-262 ► ECMAScript ► JavaScript (складається з ECMAScript + DOM + BOM)


7
Отже, що в node.js - це не JavaScript? Оскільки він не має API DOM.
Аруна Герат

4
Це правильно. "Node.js побудований на основі сучасних версій V8." & "V8 реалізує ECMAScript, як зазначено в ECMA-262, 5-е видання ..." & "DOM, однак, зазвичай не надається двигуном JavaScript, а натомість браузером. Те ж саме стосується V8 - Google Chrome забезпечує DOM ". (Джерело: nodejs.org/en/docs/es6 & github.com/v8/v8/wiki/Introduction )
jerone

7
@jerone Яку версію ECMAScript я використовую, коли пишу код JavaScript? Чи залежить від браузера чи бібліотеки?
TheJollySin

4
Ви можете дати посилання на JavaScript = ECMAScript + DOM API;?
Корай Тугай

2
@ koray-tugay Окрім того, тут не так багато документації про те, що саме є JavaScript. Я думаю, саме тому це питання настільки популярне. "Формула" JavaScript = ECMAScript + DOM API;якраз базується на загальній узгодженій задокументованою умовою, з якої складається JavaScript.
jerone

42

Технічно ECMAScript - це мова, якою всі користуються та реалізують - це специфікація, створена багато років тому, коли Netscape та Microsoft сіли та намагалися стандартизувати сценарії між JavaScript (сценарій мови Netscape) та JScript (Microsoft).

Згодом усі ці двигуни нібито впроваджують ECMAScript, проте JavaScript (назва) тепер зависає як з традиційних причин іменування, так і як маркетинговий термін від Mozilla за їх різні нестандартні розширення (які вони хочуть мати можливість фактично "версії") )


12
Netscape і Microsoft на насправді ладнали один раз?!
Коул Джонсон

2
Я думав, що Брендон хотів зробити JS еталоном перед Microsoft, і єдиний, кого він міг знайти, був ECMA.
Джо Сіммонс

30

Що таке ECMAScript, тобто ES?

ECMAScript - стандарт для мови сценаріїв, а мова Javascript - на основі стандарту ECMAScript.

Чи Javascript точно такий же, як ECMAScript?

  • Ні, Javascript не зовсім еквівалентний ECMAScript.
  • Основні особливості Javascript засновані на стандарті ECMAScript, але Javascript також має інші додаткові функції, які не входять до специфікацій / стандарту ECMA.

JavaScript = ECMAScript + DOM API;

API DOM, як: document.getElementById('id');

Чи використовують інші мови стандарт ECMAScript?

  • Так, є інші мови, крім JavaScript, які також реалізують стандарт ECMAScript як основний.
  • ActionScript (використовується Adobe Flash) та JScript (використовується Microsoft) - це обидві мови, які реалізують стандарт ECMAScript.

Чому його називають ECMAScript?

  • Javascript був створений в Netscape спочатку, і вони хотіли стандартизувати мову. Таким чином, вони представили мову на E uropean C omputer M anufacturer - х A ssociation (ECMA) по стандартизації.
  • Але існували проблеми з товарними знаками з назвою Javascript, і стандарт став називатися ECMAScript, що є ім'ям, яке він має і сьогодні.
  • Через проблеми з товарними знаками версія мови Microsoft називається JScript - навіть незважаючи на те, що JScript, по суті, є тією ж мовою, що і JavaScript.

Є курси з простого JS та ES6 JS. Яку нам взяти? Чи більше використовується ES6 в професійних налаштуваннях? Дякую.
MasterJoe2


11

Я знаю, що це старий пост, але, сподіваюся, це допоможе комусь.

У 1990-х рр. Почали виходити різні версії js, як JavaScript від netscape, Js script від Microsoft. Тож ecmascript було введено як стандарт. Але ecmascript утворює лише частину javascript, яка вказує її основний синтаксис, типи, об'єкти тощо. Можливо, це пояснює непослідовні реалізації javascript через diff. браузери

Довідка - Wrox (Професійний Javascript для веб-розробників)


10

На моє розуміння, ECMAScript - це "Теорія" або "Специфікація", а Javascript - "Практика" або "Впровадження".



7

Існуючі відповіді досить добре перефразовують основний пункт.

Основний момент полягає в тому, що ECMAScript - це гостра абстрактна мова, без будь-яких розширень для домену, сама по собі марна. Специфікація визначає тільки мову і ядро об'єкти цього.

У той час як JavaScript і ActionScript та інші діалекти додають до нього бібліотеку, специфічну для домену, тому ви можете використовувати її для чогось значущого.

Є багато двигунів ECMAScript , деякі з них є відкритим кодом, інші є власником. Ви можете пов’язати їх зі своєю програмою, а потім додати свої власні функції до глобального об'єкта, щоб програма стала писати сценарій. Хоча найчастіше вони використовуються в браузерах.


5

Javascript - оригінальна назва, призначена для використання популярності java. ECMA - це орган зі стандартів, який здійснює нагляд за стандартом, який був врешті-решт встановлений, тому назви приблизно еквівалентні.

У реалізації є інші назви, наприклад V8 чи Rhino тощо.


3

ECMAScript є стандартом для JavaScrip t, подивіться на ці твердження з MDN :

введіть тут опис зображення

JavaScript

JavaScript (JS) - це легка інтерпретована або JIT-складена мова програмування з функціями першого класу. Хоча він є найбільш відомим як сценарій мови для веб-сторінок, багато середовищ, які не є браузером, також використовують його, такі як node.js, Apache CouchDB та Adobe Acrobat. JavaScript - заснована на прототипі, багатопарадигма, динамічна мова, що підтримує об'єктно-орієнтований, імперативний та декларативний (наприклад, функціональне програмування) стилі. Детальніше про JavaScript.


ECMAScript

Стандарт для JavaScript - ECMAScript . Станом на 2012 рік усі сучасні браузери повністю підтримують ECMAScript 5.1. Старіші браузери підтримують принаймні ECMAScript 3. 17 червня 2015 року ECMA International опублікувала шосту основну версію ECMAScript, яка офіційно називається ECMAScript 2015, і спочатку її називали ECMAScript 6 або ES6. Відтоді стандарти ECMAScript працюють на щорічних циклах випуску. Ця документація стосується останньої версії проекту, яка наразі є ECMAScript 2018.

Для отримання додаткової інформації відвідайте тут


3

Ось мої висновки:

JavaScript: Посібник , що визначається, написаний Девідом Фланаганом, дає дуже стисле пояснення:

JavaScript був створений в Netscape в перші дні Інтернету, і технічно "JavaScript" - торгова марка, ліцензована Sun Microsystems (тепер Oracle), що використовується для опису реалізації мови Netscape (тепер Mozilla). Netscape подав мову для стандартизації до ECMA, і через проблеми з товарними знаками, стандартизована версія мови була закріплена незграбною назвою "ECMAScript". З тих же причин торговельної марки версія мови Microsoft офіційно відома як "JScript". На практиці майже всі називають мову JavaScript.

Повідомлення в блозі від Microsoft, схоже, погоджується з тим, що Фланаган пояснює, кажучи ..

ECMAScript - офіційна назва мови JavaScript, яку ми всі знаємо і любимо.

.. що змушує мене думати, що всі події JavaScriptв цьому довідковому пості (знову Microsoft) повинні бути замінені на ECMASCript. Насправді вони здаються обережними з використанням ECMAScriptлише на цій , більш новій і більш технічній сторінці документації.

w3schools.com, схоже, згоден з вищезазначеними визначеннями:

JavaScript був винайдений Бренданом Ейхом у 1995 році, а став стандартом ECMA в 1997 році. ECMA-262 - офіційна назва стандарту. ECMAScript - офіційна назва мови.

Тут головне: офіційна назва мови .

Якщо ви переглянете сторінки Mozilla на версії JavaScript , ви побачите таке твердження:

Застарілий. Явні версії та ввімкнення мовних особливостей було специфічним для Mozilla і вони зараз видаляються. Firefox 4 була останньою версією, яка згадувала версію JavaScript (1.8.5). З новими стандартами ECMA, особливості мови JavaScript часто згадуються з їх початковим визначенням у виданнях ECMA-262, таких як ECMAScript 2015.

і коли ви побачите нотатки до останнього випуску, ви завжди побачите посилання на стандарти ECMAScript, такі як:

  • Влаштовано властивість ES2015 Symbol.toStringTag (помилка 1114580).

  • Реалізовано методи ES2015 TypedArray.prototype.toString () та TypedArray.prototype.toLocaleString () (помилка 1121938).

У веб-документах Mozilla також є сторінка, яка пояснює різницю між ECMAScript і JavaScript:

Однак, парасольовий термін "JavaScript", як його розуміють у контексті веб-браузера, містить декілька дуже різних елементів. Один з них - основна мова (ECMAScript), інший - колекція веб-API, включаючи DOM (Document Object Model).

Висновок

Наскільки я розумію, люди використовують слово JavaScript дещо вільно для позначення основної специфікації ECMAScript.

Я б сказав, всі сучасні реалізації JavaScript (або JavaScript Двигуни) насправді є реалізаціями ECMAScript. Наприклад, ознайомтеся з визначенням двигуна V8 від Google:

V8 - це високоефективний двигун JavaScript з відкритим кодом, написаний на C ++ і використовується в Google Chrome, браузері з відкритим кодом від Google та Node.js. Він реалізує ECMAScript, як зазначено в ECMA-262.

Вони, схоже, використовують слово JavaScript і ECMAScript взаємозамінно, і я б сказав, що це насправді двигун ECMAScript?

Тому більшість двигунів JavaScript реально реалізує стандарт ECMAScript, але замість того, щоб називати їх двигунами ECMAScript, вони називають себе Двигунами JavaScript. Ця відповідь також підтримує те, як я бачу ситуацію.


2

Я сумніваюся, що ми коли-небудь використовувати слово "ECMAScript", якби не той факт, що ім'я "JavaScript" належить Sun. Для всіх намірів і цілей мовою є JavaScript. Ви не ходите до книгарні, шукаючи книги ECMAScript, чи не так?

Трохи занадто просто сказати, що "JavaScript" - це реалізація. JScript - це реалізація Microsoft.


1
У мене немає проблеми зі словом ECMAscript ... Ви коли-небудь думали, що дивно говорити MPEG, а не відео?
ryansstack

7
Ха-ха. Чи не Брендан Ейх сказав, що ECMAScript звучить як шкірна хвороба? :-)
Носредна

7
Sun володіє словом Java, а не JavaScript.
Джеймс Р. Клейтон

1
@ JamesR.Clayton JavaScript був створений в Netscape в перші дні Інтернету, а технічно "JavaScript" - торгова марка, ліцензована від Sun Microsystems (тепер Oracle), що використовується для опису мови Netscape (тепер Mozilla).
Корай Тугай

1

JavaScript - це одна галузь мов, сформована навколо стандарту ECMAScript. Я вважаю, що ECMA - Європейська асоціація виробників комп’ютерів, не те, що це насправді актуально чи щось.

Не забувайте, що ще одна популярна мова, сформована навколо стандарту сценарію ECMA, - це ActionScript, що використовується в Adobe Flash / Flex.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.