Javascrip{filter}t ma bardzo dziwną historię nazewnictwa.
Po raz pierwszy został wydany w 1995 roku jako część Netscape Navigator, który nadał nowemu językowi nazwę Livescrip{filtering}t. Rok później, aby złapać medialny szum wokół Javy w tamtym czasie, nazwa została tymczasowo zmieniona na Javascrip{filtering}t (oczywiście relacja między Java a Javascrip{filtering}t jest taka sama jak między Lei Feng a Lei Feng Tower – nie ma z tym nic wspólnego)
Żart o krzywych orzechach wcale nie jest śmieszny
Notatka tłumacza: wpis Wikipedii Javascrip{filter}t opisuje tę historię bardziej szczegółowo
W 1996 roku Netscape zgłosił Javascrip{filtering}t do ECMA International (Europejskiego Stowarzyszenia Producentów Komputerów) do standaryzacji i ostatecznie sfinalizował nowy standard językowy, który nazwał się ECMAscrip{filtering}t. Od tego czasu ECMAscrip{filtering}t stanowi podstawę wszystkich implementacji Javascrip{filtering}t, choć z powodów historycznych i rynkowych (najwyraźniej ECMAscrip{filtering}t nie jest sympatyczną nazwą...... W rzeczywistości używamy ECMAscrip{filter}t tylko do wywoływania standardu, a zwykle używamy Javascrip{filter}t do wywoływania tego języka.
Terminologia:
- Standard: Zestaw reguł, które definiują, co odróżnia go od innych rzeczy
- Implementacja: Specyficzna implementacja/praktyka w praktyce standardu
Jednak deweloperzy Javascrip{filtering}t nie zwracają na to większej udziału, ponieważ ECMAscrip{filtering}t niewiele się zmienił przez 15 lat od swojego powstania, a wiele rzeczywistych implementacji już bardzo różni się od standardu. W rzeczywistości, po wydaniu pierwszej wersji ECMAscrip{filtering}t, wkrótce potem wydano dwie kolejne wersje, ale od czasu wydania ECMAscrip{filter}t 3 w 1999 roku przez dziesięć lat nie wprowadzono żadnych poprawek do oficjalnej specyfikacji. Zamiast tego dostawcy przeglądarek gorączkowo próbują rozwijać własne języki, pozostawiając deweloperom stron internetowych tylko eksperymentowanie i wspieranie tych API. Nawet po wydaniu ECMAscrip{filter}t 5 w 2009 roku, zajęło kilka lat, zanim te nowe specyfikacje zyskały szerokie poparcie w przeglądarkach, ale większość programistów nadal pisała kod w stylu ECMAscrip{filtering}t 3 i nie czuła potrzeby ich poznawania.
Notatka tłumacza: Wersja 4 ECMAscrip{filter}t została porzucona, ponieważ była zbyt agresywna, a Actioncrip{filtering}t 3.0 od Adobe jest jedyną implementacją ECMAscrip{filtering}t edycja 4 (Flash niemal zjednoczył web)
Do 2012 roku sytuacja nagle zaczęła się zmieniać. Istnieje nacisk na zakończenie wsparcia dla starszych wersji IE, a pisanie kodu w stylu ECMAscrip{filter}t 5 (ES5) jest bardziej wykonalne. Jednocześnie uruchamiana jest nowa specyfikacja ECMAscrip{filtering}t. W tym momencie ludzie zaczęli przyzwyczajać się do opisywania różnych implementacji Javascrip{filtering}t pod kątem wsparcia wersji specyfikacji ECMAscrip{filter}t. Ten nowy standard pierwotnie nosił nazwę ES. Harmonia. W 2015 roku TC39, komitet odpowiedzialny za opracowanie projektu specyfikacji ECMAscrip{filter}t, zdecydował o zmianie systemu definiowania nowych standardów na raz w roku, co oznacza, że każda nowa funkcja może być dodawana po jej zatwierdzeniu, w przeciwieństwie do ostatecznego finalizowania poprzedniej specyfikacji dopiero po ukończeniu całego szkicu i spełnieniu wszystkich funkcji. W rezultacie ECMAscrip{filtering}t wersja 6 została przemianowana na ECMAscrip{filtering}t 2015 (ES2015) przed publikacją w czerwcu.
Wciąż jest wiele nowych funkcji lub składni Javascrip{filter}t proponowanych, w tym dekoratory, właściwości klas async-await oraz statyczne. Często nazywane są ES7, ES2016 lub ES. Następnie, ale w rzeczywistości można je nazywać jedynie propozycjami lub możliwościami, w końcu specyfikacja ES2016 nie jest jeszcze ukończona i możliwe, że wszystkie zostaną wprowadzone lub żadna. TC39 dzieli propozycję na 4 fazy, a na stronie Babel możesz sprawdzić, na którym etapie znajduje się każda propozycja.
Jak więc używać tej gamy terminologii? Poniższa lista może Ci pomóc:
- ECMAscrip{filter}t: Język standaryzowany przez ECMA International i nadzorowany przez komitet TC39. Często używane do określenia samego standardu.
- Javascrip{filtering}t: Najczęściej używana nazwa różnych implementacji standardu ECMAscrip{filtering}t. Ten termin nie ogranicza się do konkretnej wersji specyfikacji ECMAscrip{filtering}t i może być stosowany do różnego stopnia implementacji dowolnej wersji ECMAscrip{filtering}t.
- ECMAscrip{filtering}t 5 (ES5): Piąta edycja ECMAscrip{filtering}t, standaryzowana w 2009 roku. Ta specyfikacja jest dość dobrze zaimplementowana we wszystkich nowoczesnych przeglądarkach.
- ECMAscrip{filter}t 6 (ES6) / ECMAscrip{filter}t 2015 (ES2015): Szóste wydanie ECMAscrip{filtering}t zostało zrewidowane i standaryzowane w 2015 roku. Ten standard jest częściowo zaimplementowany w większości nowoczesnych przeglądarek. Możesz sprawdzić tę tabelę kompatybilności, aby zobaczyć, jak różne przeglądarki i narzędzia są implementowane.
- ECMAscrip{filter}t 2016: Spodziewana siódma edycja wersji ECMAscrip{filter}t, zaplanowana do premiery latem przyszłego roku. Konkretne funkcje, które zostaną zawarte w tej specyfikacji, nie zostały jeszcze sfinalizowane
- ECMAscrip{filter}t Proposals: Propozycje cech i składni, które będą rozpatrywane do włączenia do przyszłych wersji standardu ECMAscrip{filter}t, przejdą przez pięć etapów: Strawman, Proposal, Draft, Candidate i Finished.
W całym tym wpisie na blogu będę odnosić się do obecnej wersji ECMAscrip{filtering}t jako ES6 (ponieważ większość programistów jest do tego przyzwyczajona), do przyszłorocznej specyfikacji jako ES2016 (ponieważ, w przeciwieństwie do ES6/ES2015, ta nazwa będzie używana przez cały proces standaryzacji), a przyszłe koncepcje językowe, które nie zostały jeszcze sfinalizowane lub opracowane jako propozycje ECMAscrip{filtering}t lub Javascrip{filter}t proposal. Postaram się śledzić ten artykuł w każdej sytuacji, która może powodować zamieszanie.