Пошук уроків, статей та іншого контенту
Що таке ECMAScript та як з'явився JavaScript
JavaScript та ECMAScript часто згадують разом, через що на початку легко заплутатися.
Спрощено:
ECMAScript = стандарт
JavaScript = реалізація мови відповідно до стандартуРозберімося детальніше.
JavaScript з'явився у 1995 році.
Мову створив Brendan Eich під час роботи в Netscape.
Початкову реалізацію було створено дуже швидко — приблизно за десять днів.
Спочатку мова мала інші назви, зокрема Mocha та LiveScript, після чого отримала назву JavaScript.
Попри схожість назв, JavaScript не є різновидом Java.
Коли JavaScript почали підтримувати різні браузери, виникла потреба у спільному стандарті.
Потрібно було визначити:
Який синтаксис має мова?
Як повинні працювати функції?
Як поводяться об'єкти?
Які типи даних існують?
Які можливості повинні підтримувати реалізації?Стандартизацією займається Ecma International.
Стандарт мови отримав назву ECMAScript, а його специфікація відома як ECMA-262.
Уявімо креслення автомобіля.
ECMAScript
= специфікація / правила
JavaScript engine
= реалізація цих правилРізні JavaScript-рушії реалізують можливості, визначені стандартом.
Тому ECMAScript — не «інша мова, яку треба вивчити після JavaScript».
Коли ви вивчаєте сучасний JavaScript, ви фактично використовуєте можливості, описані стандартом ECMAScript.
Важливим етапом став ECMAScript 5, опублікований у 2009 році.
Серед відомих можливостей цієї епохи:
"use strict";а також багато стандартних методів для роботи з масивами та об'єктами.
ES5 довгий час був основою JavaScript у браузерах.
Один із найбільших етапів розвитку мови відбувся у 2015 році.
ECMAScript 2015 часто називають:
ES6Він приніс багато можливостей, без яких складно уявити сучасний JavaScript.
let counter = 0;
const API_URL = "/api";const sum = (a, b) => a + b;class User {
constructor(name) {
this.name = name;
}
}const name = "Anna";
console.log(`Hello, ${name}!`);export function sum(a, b) {
return a + b;
}import { sum } from "./math.js";ES2015 став настільки важливим оновленням, що термін «ES6» досі часто зустрічається у документації, статтях та назвах курсів.
Після ECMAScript 2015 стандарт перейшов до регулярнішого циклу оновлень.
Нові версії виходять щороку.
Наприклад:
ES2016
ES2017
ES2018
ES2019
ES2020
...Це не означає, що щороку з'являється нова мова.
JavaScript поступово отримує нові можливості.
Наприклад, у різні роки з'явилися або були стандартизовані такі можливості, як:
async / awaitobj?.propertyvalue ?? defaultValuePromise.allSettled()та багато інших.
Розвитком стандарту займається комітет TC39.
До процесу залучені представники компаній та експерти екосистеми JavaScript.
Нові можливості не просто «додаються в мову».
Пропозиції проходять декілька стадій:
Stage 0
Stage 1
Stage 2
Stage 2.7
Stage 3
Stage 4Ідея поступово уточнюється, отримує специфікацію, реалізації та тестування.
Коли пропозиція досягає Stage 4, вона готова до включення у стандарт.
Стандарт може описати нову можливість, але браузерні рушії повинні її реалізувати.
Тому існують:
специфікація
↓
реалізація у JavaScript engines
↓
підтримка браузерамиСаме тому перед використанням нової можливості у production-проєкті варто перевіряти її сумісність із потрібними середовищами.
Іноді сучасний JavaScript перетворюють у код, сумісний зі старішими середовищами.
Наприклад:
const greet = (name) => {
return `Hello, ${name}`;
};може бути перетворений інструментами збірки у синтаксис, який підтримують старіші середовища.
Такий процес називається транспіляцією.
Одним із відомих інструментів для цього є Babel.
У сучасних проєктах багато таких процесів налаштовуються фреймворком або build-системою автоматично.
Ні.
Не потрібно окремо вчити:
ES5
потім ES6
потім ES2017
потім ES2018
...Краще вивчати сучасний JavaScript, а історію версій використовувати як контекст.
Важливіше розуміти:
які можливості є частиною стандарту;
чи підтримує їх потрібне середовище;
чи потрібна транспіляція;
чи є можливість експериментальною.
Вважати ECMAScript окремою мовою, яку потрібно вивчати після JavaScript.
ECMAScript — стандарт, на якому базується JavaScript.
Називати весь сучасний JavaScript ES6.
ES6 — це конкретна версія стандарту 2015 року. Після неї вийшло багато нових редакцій.
Використовувати експериментальний синтаксис лише тому, що він описаний у статті.
Не всі пропозиції TC39 гарантовано потрапляють у стандарт у початковому вигляді.
Вважати, що нова можливість стандарту автоматично працює у всіх браузерах.
Підтримка залежить від реалізації конкретних JavaScript-рушіїв.
JavaScript постійно розвивається, а ECMAScript визначає стандартизовані правила цієї мови.
Головна модель:
TC39
↓
розробляє пропозиції
ECMAScript
↓
описує стандарт
JavaScript Engines
↓
реалізують стандарт
Браузери та інші середовища
↓
дозволяють запускати JavaScriptВам не потрібно запам'ятовувати всі версії ECMAScript.
Набагато важливіше навчитися працювати із сучасним JavaScript і розуміти, звідки беруться нові можливості мови.