W świecie JavaScript, nazwy i skróty takie jak ECMA, ECMAScript, ES6, czy ES2015 mogą wprowadzać w zamieszanie. Pozwólcie, że wyjaśnię, co one oznaczają.
ECMA (European Computer Manufacturers Association)
ECMA to organizacja standaryzacyjna, która opracowuje standardy dla przemysłu komputerowego w Europie. Zajmuje się opracowywaniem standardów dla różnych technologii, w tym języków programowania.
ECMAScript (ES)
To oficjalna nazwa standardu, na którym opiera się JavaScript. ECMAScript określa, jak powinien wyglądać JavaScript – od składni po rodzaje danych, które można używać. Stanowi on fundament dla wielu języków programowania, z JavaScript jako najbardziej popularnym przykładem. Skrót ES pochodzi od pełnej nazwy – ECMAScript.
ECMA-262
To numer dokumentu, który szczegółowo opisuje ECMAScript. Można myśleć o nim jak o oficjalnym przewodniku po tym, jak powinien działać JavaScript. Dla zainteresowanych, pełną specyfikację znajdziesz na oficjalnej stronie ECMA International pod adresem: ECMA-262 Specification.
Standardy nazewnictwa
Początkowe wersje standardu ECMAScript oznaczały się prostymi skrótami, jak ES1, ES2, aż do wydania ES5 w 2009 roku, z jego aktualizacją w 2011 roku (ES 5.1). Następną wersję, ES6, pierwotnie planowano wydać w 2013 roku, ale opóźnienia przesunęły premierę na 2014, a ostatecznie wydano ją w 2015 roku. W tym samym czasie wprowadzono nowy schemat oznaczania wersji, oparty na roku wydania. Dlatego wersja ES2016 stała się znana jako ES7, a ES2017 jako ES8, i tak dalej.
Warto również wspomnieć, że ES6, chociaż powszechnie znany pod tą nazwą, nosi również mniej popularną nazwę ES2015.
Opis poszczególnych wersji:
- ECMAScript 1 (1997) – ES1: Podstawowa struktura języka JavaScript. Wprowadzenie m.in. zmiennych, funkcji, warunków, pętli.
- ECMAScript 2 (1998) – ES2: Poprawki i usprawnienia w stosunku do poprzedniej wersji.
- ECMAScript 3 (1999) – ES3: Znaczne ulepszenia. Wprowadzenie wyrażeń regularnych, obsługi błędów try-catch.
- ECMAScript 4: Planowano wprowadzenie licznych nowości, ale prace nad tą wersją zostały anulowane. Większość tych nowości została wdrożonych w wersji ES6.
- ECMAScript 5 (2009) – ES5: Wprowadzenie wielu nowości, w tym obiekt JSON, tryb strict, nowe metody dla obiektu Array (między innymi indexOf, map).
- ECMAScript 5.1 (2011): Aktualizacja standardu ES5.
- ECMAScript 6 (2015) – ES6 lub ES2015: Duże zmiany, takie jak deklaracja zmiennych za pomocą let i const, nowe typy danych, arrow functions, klasy, destrukturyzacja, moduły.
- ECMAScript 2016 – ES7 lub ES2016: Wprowadzenie operatora potęgowania (**), Array.prototype.includes().
- ECMAScript 2017 – ES8 lub ES2017: Kilka nowości, m.in. Async/Await, Object.values(), Object.entries(), String padding.
- ECMAScript 2018 – ES9 lub ES2018: Nowości to m.in. spread/rest operator w obiektach, Promise.prototype.finally(), dodatkowe metody dla obiektu RegExp.
- ECMAScript 2019 – ES10 lub ES2019: Nowości to m.in. Array.prototype.flat(), Array.prototype.flatMap(), String.prototype.trimStart(), String.prototype.trimEnd(), Object.fromEntries().
- ECMAScript 2020 – ES11 lub ES2020: Nowości to m.in. nullish coalescing operator (??), optional chaining operator (?.), String.prototype.matchAll(), globalThis.
- ECMAScript 2021 – ES12 lub ES2021: Nowości to m.in. Object.getOwnPropertyDescriptors(), String.prototype.replaceAll(), Promise.any(), Logical Assignment Operators.
- ECMAScript 2022 – ES13 lub ES2022: Nowości to m.in. Składnia #x in obj, dodano Object.hasOwn jako wygodną alternatywę dla Object.prototype.hasOwnProperty, nowe elementy klas.
- ECMAScript 2023 – ES14 lub ES2023: Nowości to m.in. Nowe metody na Array.prototype i TypedArray.prototype, w tym toSorted, toReversed, with, findLast, findLastIndex i toSpliced. Wprowadzenie wsparcia dla komentarzy „#!” na początku plików, umożliwiających bezpośrednie wykonywanie plików ECMAScript.