Jaka jest różnica między JavaScript a ECMAScript?


462

Jaka jest różnica między ECMAScript a JavaScript? Z tego, co wydedukowałem, ECMAScript jest standardem, a JavaScript jest implementacją. Czy to jest poprawne?

Odpowiedzi:


183

ECMAScript jest językiem, podczas gdy JavaScript, JScript, a nawet ActionScript 3 są nazywane „dialektami”. Wikipedia rzuca na to trochę światła.


9
naprawdę fajne byłoby wyraźne mapowanie między JavaScript i wersjami ECMAScript, np. ES5 odpowiada JS1.5 itd. ah znalazłem to: en.wikipedia.org/wiki/JavaScript#Versions
Sam Joseph

2
@Sam - aktualizacja linku Sama: en.wikipedia.org/wiki/JavaScript#Version_history
Rop

65
Głosowałem na Yang i Li, ponieważ ta odpowiedź niewiele mówi i w zasadzie prowadzi do Wikipedii. Odpowiedź Yang Li jest znacznie bardziej szczegółowa i przydatna. Również to, czy jeden jest językiem / standardem, a drugi dialektem, implementacją itp., Jest otwarte na opinię, a nie fakt, z tego, co rozumiem. Podczas gdy ta odpowiedź wydaje się, że jest to fakt. Popraw mnie, jeśli się mylę. W rzeczywistości argumentowałbym, że sugestia zawarta w tej odpowiedzi nie jest nawet popularnym konsensusem. Jak większość widzi ECMAScript ma standard i JavaScript jako język.
redfox05


5
Nie zgadzam się. ECMAScript jest specyfikacją. JS, JScript, ActionScript to języki, które implementują taką specyfikację.
adripanico

611

Myślę, że należy się trochę lekcji historii.

JavaScript został pierwotnie nazwany Mocha i zmieniony na Livescript, ale ostatecznie stał się JavaScript.

Ważne jest, aby pamiętać, że JavaScript pojawił się przed ECMAscript, a historia podpowie, dlaczego.

Na początek JavaScript wywodził swoją nazwę od Javy i początkowo Brendan Eich (twórca JS) został poproszony o opracowanie języka przypominającego Javę dla Internetu dla Netscape.

Eich zdecydował jednak, że Java jest zbyt skomplikowana, jeśli chodzi o wszystkie jej reguły, i dlatego postanowił stworzyć prostszy język, w którym nawet początkujący mógłby się zakodować. Jest to widoczne w takich rzeczach, jak rozluźnienie potrzeby posiadania średnika.

Po ukończeniu języka zespół marketingowy Netscape poprosił firmę Sun o zezwolenie, by nazwała go JavaScript jako chwyt marketingowy i dlatego większość osób, które nigdy nie używały JavaScript, uważa, że ​​jest to związane z Javą.

Mniej więcej rok lub dwa po wydaniu JavaScript w przeglądarce IE Microsoftu wziął ten język i zaczął tworzyć własne implementacje, takie jak JScript. Jednocześnie IE dominowało na rynku i niedługo po tym, jak Netscape musiał zamknąć swój projekt.

Zanim Netscape upadł, postanowili uruchomić standard, który poprowadzi ścieżkę JavaScript, o nazwie ECMAScript.

ECMAScript miał kilka wydań, aw 1999 roku wydali ostatnią wersję (ECMAScript 3), zanim przeszli w stan hibernacji na następne 10 lat. W ciągu tych 10 lat Microsoft zdominował sceny, ale jednocześnie nie ulepszali swojego produktu, dlatego narodził się Firefox (prowadzony przez Eicha) i cała masa innych przeglądarek, takich jak Chrome, Opera.

ECMAScript wydał swoją 5. edycję w 2009 roku (4. edycja została porzucona) z funkcjami takimi jak tryb ścisły. Od tego czasu ECMAScript zyskał duży rozpęd i planuje wydać swoją 6. edycję w ciągu kilku miesięcy od teraz z największymi zmianami, jakie do tej pory miały.

Możesz skorzystać z listy funkcji ECMAScript 6 tutaj http://kangax.github.io/es5-compat-table/es6/, a także obsługi przeglądarki. Możesz nawet zacząć pisać Ecmascript 6, tak jak w przypadku CoffeeScript, i użyć kompilatora do skompilowania do Ecmascript 5.

To, czy ECMAScript jest językiem, a JavaScript jest dialektem, jest dyskusyjne, ale nie ważne. Jeśli nadal będziesz tak myślał, może Cię to zdezorientować. Nie ma kompilatora, który uruchamiałby ECMAScript, i uważam, że JavaScript jest uważany za język, który implementuje standard o nazwie ECMAScript.

Istnieją również inne zauważalne języki, które implementują ECMAScript, takie jak ActionScript (używany we Flashu)


1
Osoby zainteresowane kompilacją / transpozycją nowego standardu ES2015 do kodu ECMAScript 5 będą chciały sprawdzić Babel (wcześniej 6to5) dostępny na babeljs.io lub traceur na github.com/google/traceur-compiler . Dzięki tym narzędziom nie ma powodu, dla którego nie możesz teraz zacząć pisać „nowego JavaScript” i skorzystać z wszystkich najnowszych dodatków do języka.
LWurm

1
Nie wiedziałem, że Lua implementuje ECMAScript. Nie mogę znaleźć niczego, co to potwierdza. Jakie jest twoje źródło?
battmanz

2
@YangLi Czy zgadzasz się z odpowiedzią jerone poniżej, że języki ECMAScript nie zawierają interfejsu API DOM, którego wszyscy używamy, pisząc czysty JavaScript?
theJollySin

11
@ theJollySin Tak, ma rację. ECMAScript nie został zaprojektowany specjalnie dla przeglądarki, więc metody takie jak document.getElementById i inne interfejsy API DOM nie są częścią standardu. Należą one do standardów WHATWG, wraz z niektórymi innymi metodami specyficznymi dla przeglądarki, takimi jak localStorage itp. Jeśli weźmiesz węzeł i nie użyjesz żadnych zaimportowanych modułów, masz interfejs API tylko ECMAScript.
Yang Li

1
Jak wiele języków może implementować ten sam standard, a nie być tym samym językiem? Standard określa język. Jeśli jakiś język implementuje standard C ++, nazywa się C ++, a nie czymś innym (właśnie dlatego, że implementuje ten standard). Więc wciąż mam to samo pytanie ... jaka jest różnica?
Neme

157

ECMAScript = ES:

  • ECMAScript to standard języków skryptowych.

  • Języki takie jak Javascript są oparte na standardzie ECMAScript.

  • Standard ECMA opiera się na kilku oryginalnych technologiach, z których najbardziej znanymi są JavaScript (Netscape) i JScript (Microsoft).

  • ECMA oznacza Europejskie Stowarzyszenie Producentów Komputerów

JavaScript = JS:

  • JavaScript jest najpopularniejszą implementacją standardu ECMAScript.

  • Podstawowe funkcje Javascript są oparte na standardzie ECMAScript, ale Javascript ma również inne dodatkowe funkcje, których nie ma w specyfikacji / standardzie ECMA.

  • ActionScript i JScript to inne języki, które implementują ECMAScript.

  • JavaScript został przesłany do ECMA w celu standaryzacji, ale z powodu problemów ze znakiem towarowym o nazwie Javascript standard został nazwany ECMAScript.

  • Każda przeglądarka ma interpreter JavaScript.

ES5 = ECMAScript 5:

  • ES5 to wersja ECMAScript (stara / aktualna).

  • ES5 to JavaScript, który znasz i którego używasz dzisiaj w przeglądarce.

  • ES5 nie wymaga kroku kompilacji (transpilatorów), aby przekształcić go w coś, co będzie działać w dzisiejszych przeglądarkach.

  • ECMAScript wersja 5 została ukończona w grudniu 2009 roku, najnowsze wersje wszystkich głównych przeglądarek (Chrome, Safari, Firefox i IE) mają zaimplementowaną wersję 5.

  • Wersja 5.1 została ukończona w czerwcu 2011 roku.

ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:

  • ES2015 jest wersją ECMAScript (nowy / przyszły).

  • Oficjalnie zamiast ES6 należy użyć nazwy ES2015.

  • ES6 usunie wiele niedociągnięć w języku podstawowym, które zostały wyeliminowane w TypeScript i CoffeeScript.

  • ES6 to kolejna wersja JavaScript, ale nie działa w dzisiejszych przeglądarkach.

  • Istnieje wiele transpilatorów, które eksportują ES5 do działania w przeglądarkach.

BabelJS:

  • BabelJS to najpopularniejszy transpiler, który przekształca nowy JavaScript ES6 na Stary JavaScript ES5.

  • BabelJS umożliwia dziś pisanie JavaScriptu nowej generacji (oznacza ES2015).

  • BabelJS po prostu pobiera plik ES2015 i przekształca go w plik ES5.

  • Obecne wersje przeglądarek mogą teraz zrozumieć nowy kod JavaScript (ES2015), nawet jeśli jeszcze go nie obsługują.

TypeScript i CoffeeScript:

  • Oba zapewniają cukier syntaktyczny na ES5, a następnie są przekształcane w JavaScript zgodny z ES5. 

  • Piszesz TypeScript lub CoffeeScript, a następnie transpiler przekształca go w ES5 JavaScript.


3
Javascript ma również inne dodatkowe funkcje, których nie ma w specyfikacji / standardzie ECMA ” Czy możesz podać kilka przykładów tych funkcji?
Aruna Herath

1
JavaScript jest najpopularniejszą implementacją standardu ECMAScript. ” Gdzie zatem mogę znaleźć źródło tej implementacji o nazwie „JavaScript”?
bzeaman

7
W moim pytaniu staram się wskazać na potencjalną nieprawidłowość sformułowania odpowiedzi. Użyto słowa „wdrożenie”. Mówi się, że JavaScript jest „najpopularniejszą implementacją ”. Wdrożenie to „ realizacja specyfikacji technicznej”. Co przekłada się na oprogramowanie . Zastanawiam się więc, gdzie jest to oprogramowanie o nazwie „JavaScript”.
bzeaman

4
@Corrodias Zgadzam się, że czuję się jak wybieranie nitów, ale myślę, że rozsądnie jest zrobić, gdy odpowiedź dotyczy definiowania rzeczy. JavaScript jest językiem znormalizowanym obecnie przez ECMAscript, porównywalnym do języka C znormalizowanego standardami ISO. Terminem JavaScript byłby zatem po prostu „język”, nic więcej.
bzeaman

4
Podsumowania ES5, ES2015 i BabelJS naprawdę oczyszczają powietrze z wielu nieporozumień, jakie można mieć, gdy ląduje w dzisiejszym świecie skryptów JS z programowania po stronie serwera. Świetna odpowiedź. +1
RBT

45

JavaScript = ECMAScript + DOM + BOM ;

  • Specyfikacja języka ECMAScript® definiuje całą logikę tworzenia i edycji obiektów, tablic, liczb itp.

  • DOM ( D Oument O bject M odel ) umożliwia komunikację z dokumentami HTML / XML (np document.getElementById('id');.).

  • BOM ( B rowser O bject M odel ) to hierarchia obiektów przeglądarki (np. Obiekt lokalizacji, obiekt historii, elementy formularza).

Historia nazewnictwa JavaScript:

Mocha ► LiveScript ► JavaScript ► (w rezultacie część JS) ECMA-262 ► ECMAScript ► JavaScript (składa się z ECMAScript + DOM + BOM)


7
Więc co jest w node.js nie jest JavaScript? Ponieważ nie ma interfejsu API DOM.
Aruna Herath

4
To jest poprawne. „Node.js jest zbudowany na nowoczesnych wersjach V8”. & „V8 implementuje ECMAScript, jak określono w ECMA-262, 5. edycja ...” & „DOM nie jest jednak zazwyczaj dostarczany przez silnik JavaScript, ale przez przeglądarkę. To samo dotyczy V8 - Google Chrome zapewnia DOM. ” (Źródło: nodejs.org/en/docs/es6 & github.com/v8/v8/wiki/Introduction )
jerone

7
@jerone Jakiej wersji ECMAScript używam, gdy piszę kod JavaScript? Czy różni się w zależności od przeglądarki lub biblioteki?
theJollySin

4
Czy możesz podać odniesienie JavaScript = ECMAScript + DOM API;?
Koray Tugay

2
@ koray-tugay Z wyjątkiem tego, nie ma zbyt wiele dokumentacji na temat tego, czym dokładnie jest JavaScript. Myślę, że dlatego to pytanie jest tak popularne. „Formuła” JavaScript = ECMAScript + DOM API;opiera się wyłącznie na ogólnie uzgodnionych, udokumentowanych warunkach, z których składa się JavaScript.
jerone

42

Technicznie ECMAScript jest językiem, którego wszyscy używają i wdrażają - jest to specyfikacja stworzona wiele lat temu, kiedy Netscape i Microsoft usiedli i próbowali ustandaryzować skrypty między JavaScript (językiem skryptowym Netscape) a JScript (Microsoft).

Następnie wszystkie te silniki pozornie implementują ECMAScript, jednak JavaScript (nazwa) jest teraz zawieszony zarówno z tradycyjnych powodów nazewnictwa, jak i jako marketingowy termin Mozilli dla różnych niestandardowych rozszerzeń (które chcą być w stanie „wersjonować” )


12
Netscape i Microsoft rzeczywiście się dogadali ?!
Cole Johnson

2
Myślałem, że Brandon chciał uczynić JS standardem przed Microsoftem, a jedynym, jaki mógł znaleźć, był ECMA.
Joe Simmons,

30

Co to jest ECMAScript, tj. ES?

ECMAScript jest standardem dla języka skryptowego, a język JavaScript jest oparty na standardzie ECMAScript.

Czy JavaScript jest dokładnie taki sam jak ECMAScript?

  • Nie, JavaScript nie jest dokładnie równoważny z ECMAScript.
  • Podstawowe funkcje Javascript są oparte na standardzie ECMAScript, ale Javascript ma również inne dodatkowe funkcje, których nie ma w specyfikacji / standardzie ECMA.

JavaScript = ECMAScript + DOM API;

DOM API, takie jak: document.getElementById('id');

Czy inne języki używają standardu ECMAScript?

  • Tak, istnieją języki inne niż JavaScript, które również implementują standard ECMAScript jako swój rdzeń.
  • ActionScript (używany przez Adobe Flash) i JScript (używany przez Microsoft) to języki, które implementują standard ECMAScript.

Dlaczego nazywa się ECMAScript?

  • Javascript został pierwotnie stworzony w Netscape i chcieli ujednolicić język. Tak, oni składać język do E uropejskiej C omputer M na anufacturer A ssociation (ECMA) dla normalizacji.
  • Pojawiły się jednak problemy ze znakiem towarowym związane z nazwą Javascript, a standard został nazwany ECMAScript, który również ma dziś swoją nazwę.
  • Z powodu problemów związanych ze znakami towarowymi, wersja języka Microsoft nosi nazwę JScript - mimo że JScript jest w istocie tym samym językiem co JavaScript.

Istnieją kursy na zwykłym JS i ES6 JS. Który powinniśmy wziąć? Czy ES6 jest częściej używany w profesjonalnych ustawieniach? Dzięki.
MasterJoe2

16

Różne wersje JavaScript są implementacjami standardu ECMAScript.


11

wiem, że to stary post, ale mam nadzieję, że to komuś pomoże.

W latach 90. zaczęły pojawiać się różne wersje js, takie jak javascript z netscape, skrypt Js z Microsoft. Więc ecmascript został wprowadzony jako standard. Ale ecmascript stanowi tylko część javascript, która określa jego podstawową składnię, typy, obiekty itp. Prawdopodobnie wyjaśnia to niespójne implementacje javascript w różnych wersjach. przeglądarki

Odniesienia - Wrox (Professional Javascript dla programistów stron internetowych)


10

W moim rozumieniu ECMAScript to „Teoria” lub „Specyfikacja”, a Javascript to „Praktyczne” lub „Implementacja”.


10

JavaScript jest językiem ECMAScript.

ECMAScript niekoniecznie jest JavaScript.


7

Istniejące odpowiedzi dość dobrze parafrazują główny punkt.

Najważniejsze jest to, że ECMAScript jest czystym językiem abstrakcyjnym, bez rozszerzeń specyficznych dla domeny, sam w sobie jest bezużyteczny. Specyfikacja określa jedynie język i rdzeń obiektów z niego.

Podczas gdy JavaScript, ActionScript i inne dialekty dodają do niej bibliotekę specyficzną dla domeny, możesz więc użyć jej do czegoś sensownego.

Istnieje wiele silników ECMAScript , niektóre z nich są oprogramowaniem typu open source, inne są zastrzeżone. Możesz połączyć je ze swoim programem, a następnie dodać swoje rodzime funkcje do obiektu globalnego, aby twój program stał się skryptowalny. Chociaż najczęściej są używane w przeglądarkach.


5

Javascript był oryginalną nazwą, która miała wykorzystać popularność Java. ECMA jest organem normalizacyjnym, który nadzoruje normę, która ostatecznie została wprowadzona, więc nazwy są w przybliżeniu równoważne.

Implementacje mają inne nazwy, takie jak V8 lub Rhino itp.


3

ECMAScript jest standardem dla JavaScrip t, spójrz na te instrukcje z MDN :

wprowadź opis zdjęcia tutaj

JavaScript

JavaScript (JS) to lekki interpretowany lub skompilowany w JIT język programowania z pierwszorzędnymi funkcjami. Chociaż jest najbardziej znany jako język skryptowy dla stron internetowych, używa go również wiele środowisk innych niż przeglądarka, takich jak node.js, Apache CouchDB i Adobe Acrobat. JavaScript to oparty na prototypach, dynamiczny język oparty na wielu paradygmatach, obsługujący style obiektowe, imperatywne i deklaratywne (np. Programowanie funkcjonalne). Przeczytaj więcej o JavaScript.


ECMAScript

Standardem dla JavaScript jest ECMAScript . Od 2012 r. Wszystkie nowoczesne przeglądarki w pełni obsługują ECMAScript 5.1. Starsze przeglądarki obsługują co najmniej ECMAScript 3. 17 czerwca 2015 r. ECMA International opublikowała szóstą główną wersję ECMAScript, która oficjalnie nosi nazwę ECMAScript 2015 i początkowo była nazywana ECMAScript 6 lub ES6. Od tego czasu standardy ECMAScript są wydawane co roku. Ta dokumentacja odnosi się do najnowszej wersji roboczej, którą jest obecnie ECMAScript 2018.

Aby uzyskać więcej informacji, odwiedź tutaj


3

Oto moje ustalenia:

JavaScript: The Definitive Guide , napisany przez Davida Flanagana, zawiera bardzo zwięzłe wyjaśnienie:

JavaScript został stworzony w Netscape we wczesnych dniach Internetu, a technicznie „JavaScript” jest znakiem handlowym licencjonowanym przez Sun Microsystems (obecnie Oracle) używanym do opisania implementacji języka przez Netscape (obecnie Mozilla). Netscape przesłał ECMA język do standaryzacji, a ze względu na problemy ze znakami towarowymi znormalizowana wersja tego języka utknęła z niezręczną nazwą „ECMAScript”. Z tych samych powodów związanych ze znakami towarowymi wersja języka Microsoft jest oficjalnie znana jako „JScript”. W praktyce prawie wszyscy nazywają język JavaScript.

Blogu przez Microsoft wydaje się zgodzić z tym, co Flanagan wyjaśnia mówiąc ..

ECMAScript to oficjalna nazwa języka JavaScript, który wszyscy znamy i kochamy.

.. co sprawia mi myśleć, wszystkie wystąpienia JavaScriptw tym poście odniesienia (przez Microsoft znowu) muszą być zastąpione ECMASCript. Wydają się być ostrożni z używaniem ECMAScripttylko na tej , nowszej i bardziej technicznej stronie dokumentacji.

w3schools.com wydaje się zgadzać z powyższymi definicjami:

JavaScript został wynaleziony przez Brendana Eicha w 1995 r., A stał się standardem ECMA w 1997 r. ECMA-262 to oficjalna nazwa tego standardu. ECMAScript to oficjalna nazwa języka.

Kluczem jest tutaj: oficjalna nazwa języka .

Jeśli sprawdzisz strony wersji JavaScript Mozilli , zobaczysz następujące oświadczenie:

Przestarzałe. Wyraźna wersja i opcjonalne funkcje językowe były specyficzne dla Mozilli i są w trakcie usuwania. Firefox 4 był ostatnią wersją, która odwoływała się do wersji JavaScript (1.8.5). W nowych standardach ECMA często wspominane są teraz funkcje języka JavaScript wraz z ich pierwotną definicją w wydaniach ECMA-262, takich jak ECMAScript 2015.

a kiedy zobaczysz ostatnie informacje o wersji, zawsze zobaczysz odniesienie do standardów ECMAScript, takich jak:

  • Zaimplementowano właściwość Symbol.toStringTag ES2015 (błąd 1114580).

  • Zaimplementowano metody TypedArray.prototype.toString () i TypedArray.prototype.toLocaleString () (błąd 1121938).

Dokumenty WWW Mozilli mają także stronę wyjaśniającą różnicę między ECMAScript a JavaScript:

Jednak ogólny termin „JavaScript” rozumiany w kontekście przeglądarki internetowej zawiera kilka bardzo różnych elementów. Jednym z nich jest język podstawowy (ECMAScript), innym jest kolekcja interfejsów API sieci Web, w tym DOM (Document Object Model).

Wniosek

W moim rozumieniu ludzie używają słowa JavaScript nieco swobodnie w odniesieniu do podstawowej specyfikacji ECMAScript.

Powiedziałbym, że wszystkie nowoczesne implementacje JavaScript (lub silniki JavaScript) są w rzeczywistości implementacjami ECMAScript. Sprawdź definicję silnika V8 od Google, na przykład:

V8 to wysokowydajny silnik JavaScriptu Google, napisany w C ++ i używany między innymi w Google Chrome, przeglądarce open source Google i Node.js. Implementuje ECMAScript, jak określono w ECMA-262.

Wydaje się, że używają zamiennie słów JavaScript i ECMAScript, i powiedziałbym, że to właściwie silnik ECMAScript?

Dlatego większość silników JavaScript faktycznie implementuje standard ECMAScript, ale zamiast nazywać je silnikami ECMAScript, nazywają się silnikami JavaScript. Ta odpowiedź obsługuje również sposób, w jaki widzę sytuację.


2

Wątpię, czy kiedykolwiek użylibyśmy słowa „ECMAScript”, gdyby nie fakt, że nazwa „JavaScript” jest własnością firmy Sun. Dla wszystkich celów i celów językiem jest JavaScript. Nie chodzisz do księgarni w poszukiwaniu książek ECMAScript, prawda?

Nieco łatwo jest powiedzieć, że „JavaScript” to implementacja. JScript jest implementacją Microsoft.


1
Nie mam problemu ze słowem ECMAscript ... czy kiedykolwiek myślałeś, że dziwnie jest mówić MPEG zamiast wideo?
ryansstack

7
Ha ha. Czy to nie Brendan Eich powiedział, że ECMAScript brzmi jak choroba skóry? :-)
Nosredna

7
Sun jest właścicielem słowa Java, a nie JavaScript.
James R. Clayton

1
@ JamesR.Clayton JavaScript został stworzony w Netscape we wczesnych dniach Internetu, a technicznie „JavaScript” jest znakiem handlowym licencjonowanym przez Sun Microsystems (obecnie Oracle) używanym do opisania implementacji języka Netscape (obecnie Mozilla).
Koray Tugay

1

JavaScript to jedna gałąź języków utworzona wokół standardu ECMAScript. Uważam, że ECMA jest Europejskim Stowarzyszeniem Producentów Komputerów, nie dlatego, że jest to naprawdę istotne lub coś w tym rodzaju.

Nie zapomnij, że innym popularnym językiem utworzonym wokół standardu ECMA Script jest ActionScript, używany w Adobe Flash / Flex.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.