ECMAScript
ECMAScript | |
---|---|
Парадигма | Мультипарадигмальна мова програмування |
Дата появи | 1995 |
Творці | Brendan Eich |
Розробник | Netscape Communications Corporation |
Останній реліз | Видання 11 (червень 2020 ) |
Система типізації | неявна типізація |
Основні реалізації | SpiderMonkey, Rhino, KJS, JavaScriptCore |
Діалекти | JScript |
Під впливом від | Self, Perl |
Звичайні розширення файлів | .es [1] |
Вебсайт | ecma-international.org |
ECMAScript — стандарт мови програмування, затверджений міжнародною організацією ECMA згідно зі специфікацією ECMA-262. Найвідомішими реалізаціями стандарту є мови JavaScript, JScript та ActionScript, які широко використовується у веброзробці.
JavaScript має низку властивостей об'єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об'єктів в ньому відрізняється від традиційних мов ООП. Крім того, JavaScript має ряд властивостей, притаманних функціональним мовам, — функції як об'єкти першого рівня, об'єкти як списки, каррінг (currying), анонімні функції, замикання (closures) — що додає мові додаткову гнучкість.
JavaScript має C-подібний синтаксис, але в порівнянні з мовою Сі має такі корінні відмінності:
- об'єкти, з можливістю інтроспекції і динамічної зміни типу через механізм прототипів
- функції як об'єкти першого класу
- обробка винятків
- автоматичне приведення типів
- автоматичне прибирання сміття
- анонімні функції
Семантика мови схожа з семантикою мови Self.
Приклад оголошення і використання класу в ECMAScript (клас є одночасно функцією, оскільки функції — це об'єкти першого рівня):
function MyClass()
{
this.myValue1 = 1;
this.myValue2 = 2;
}
var mc = new MyClass();
mc.myValue1 = mc.myValue2 * 2;
Одна з популярних технологій, що дозволила зробити сторінки динамічнішими і забезпечити нові можливості — це динамічне завантаження і вставка даних в документ, що отримала назву AJAX.
Специфікація ECMAScript є стандартизованою специфікацією мови сценаріїв, розробленої Бренданом Айхом з Netscape ; спочатку він був названий Mocha, пізніше LiveScript, і нарешті JavaScript. У грудні 1995 року Sun Microsystems і Netscape оголосили JavaScript у прес-релізі. Перше видання ECMA-262 було прийнято Генеральною Асамблеєю Ecma у червні 1997 року. Відтоді було видано кілька видань мовного стандарту. Назва «ECMAScript» була компромісом між організаціями, що займаються стандартизацією мови, особливо Netscape і Microsoft, чиї суперечки домінували на ранніх сесіях стандартів. Кожен коментував, що "ECMAScript завжди був небажаною торговою назвою, що звучить як шкірна хвороба ".
Хоча як JavaScript, так і JScript прагнуть бути сумісними з ECMAScript, вони також надають додаткові функції, не описані в специфікаціях ECMA.
Опубліковано одинадцять видань ECMA-262. Робота над версією 11 стандарту була завершена в червні 2020 року.
Видання | Ім'я | Дата випуску | Зміни від попереднього видання | Редактор |
---|---|---|---|---|
1 | ECMAScript 1 | Червень 1997 року | - | Гай Л. Стіл-молодший |
2 | ECMAScript 2 | Червень 1998 року | Зміни в редакції з метою забезпечення відповідності специфікації повністю міжнародному стандарту ISO / IEC 16262 | Майк Коулішоу |
3 | ECMAScript 3 | Грудень 1999 року | Додано регулярні вирази, краще керування рядками, нові оператори керування, обробка виключень try / catch, жорсткіше визначення помилок, форматування для числового виводу та інші покращення | Майк Коулішоу |
4 | ECMAScript 4 | Ніколи не випускався | Четверте видання було залишено через політичні розбіжності щодо складності мови. Багато функцій, запропонованих для Четвертого видання, були повністю знищені; деякі з них були включені до шостого видання. | |
5 | ECMAScript 5 Докладніше про ES5
|
Грудень 2009 року | Додано «строгий режим».
Додана підтримка JSON. Додано String.trim (). Додано Array.isArray (). Додані методи ітерації масивів. |
Пратап Лакшман, Аллен Вірфс-Брок |
5.1 | ECMAScript 5.1 |
Червень 2011 року | Це видання 5.1 стандарту ECMAScript повністю узгоджується з третім виданням міжнародного стандарту ISO / IEC 16262: 2011. | Пратап Лакшман, Аллен Вірфс-Брок |
6 | ECMAScript 6
або (ECMAScript 2015)
|
Червень 2015 року | Додано let і const.
Додано значення параметрів за замовчуванням. Додано Array.find (). Додано Array.findIndex (). |
Аллен Вірфс-Брок |
7 | ECMAScript 2016 | Червень 2016 року | Основні стандартні функції мови включають в себе блок-область видимість змінних і функцій, знищенням моделі (змінні), відповідні виклики хвоста, оператор зведення в ступені **для чисел await, asyncключові слова для асинхронного програмування. | Брайан Терлсон |
8 | ECMAScript 2017 | Червень 2017 року | Додано додавання рядків.
Додані нові властивості об'єкта. Додані функції Async. Додана спільна пам'ять. |
Брайан Терлсон |
9 | ECMAScript 2018 | Червень 2018 року | Додані властивості rest/spread.
Додано асинхронну ітерацію. Додано Promise.finally (). Доповнення до RegExp. |
Брайан Терлсон |
10 | ECMAScript 2019 | Червень 2019
року |
Додані методи Array.prototype.flat, Array.prototype.flatMap.
Зміни в методах Array.sort та Object.fromEntries. |
Брайан Терлсон, Бредлі Фаріас, Джордан Гарбанд |
11 | ECMAScript 2020 | Червень 2020
року |
Додано примітивний тип BigInt для цілих чисел довільного розміру та нульовий оператор злиття та об'єкт globalThis. | Джордан Гарбанд, Кевін Сміт |
ES.Next — це динамічне ім'я, яке має будь-яка наступна версія під час написання. Функції ES.Next більш правильно називаються пропозиціями, оскільки, за визначенням, специфікація ще не завершена.
При використанні в рамках технології DHTML ECMAScript код включається в HTML-код сторінки і виконується інтерпретатором, вбудованим в браузер. Код JavaScript вставляється в теги <script></script> з обов'язковим по специфікації HTML 4.01 атрибутом type="text/javascript", хоча в більшості браузерів мова сценаріїв за умовчанням саме JavaScript.
Скрипт, що виводить модальне вікно з класичним написом «Hello, World!» усередині браузера:
<script type="text/javascript">
alert('Hello, World!');
</script>
Слідуючи концепції інтеграції JavaScript в існуючі системи, браузери підтримують включення скрипту, наприклад, в значення атрибуту події:
<a href="delete.php" onclick="return confirm('Ви впевнені?');">Видалити</a>
Тут при натисненні на посилання функція confirm('Ви впевнені?'); викликає модальне вікно з написом «Ви впевнені?», а return false; блокує перехід за посиланням. Зрозуміло, цей код працюватиме тільки якщо в браузері є та увімкнена підтримка JavaScript, інакше перехід за посиланням відбудеться без попередження.
Є і третя можливість підключення JavaScript — написати скрипт в окремому файлі, а по тому підключити його за допомогою конструкції:
<script type="text/javascript" src="http://Шлях_до_файла_зі_скриптом"></script>
При розробці великих і нетривіальних вебзастосунків з використанням JavaScript, критично важливим є доступ до інструментів зневадження. Оскільки браузери від різних виробників дещо відрізняються у поведінці (в тому числі і в Об'єктній Моделі Документа, треба мати в руках зневаджувачі для кожного браузера, якщо вебзастосунок орієнтовано на нього.
Firefox, Google Chrome, Opera та Safari мають вбудовані зневаджувачі під себе.
Internet Explorer має три зневаджувачі для себе: Microsoft Visual Studio є найпотужнішим з цих трьох, слідом йде Microsoft Script Editor (компонента Microsoft Office[2]), також існує безкоштовний Microsoft Script Debugger з базовими функціями. Вебзастосунки для Firefox допоможе вдосконалити додаток Firebug (зручно вбудований безпосередньо в браузер), або давніший зневаджувач Venkman, котрий також працює з браузером Mozilla. Drosera — це зневаджувач з WebKit engine[3], що супроводжує Apple Safari.
Також існують кілька інструментів, як вільних, наприклад JSLint[4], інструмент перевірки якості коду, що сканує JavaScript програму, шукаючи проблеми коду, так і комерційних продуктів типу інструменту з назвою JavaScript Debugger.
Оскільки ECMAScript є інтерпретатором, без строгої типізації, і може виконуватися в різних середовищах, кожне зі своїми власними особливостями сумісності, програміст має бути дуже уважним, і повинен перевіряти, що його код виконується як очікується в широкому переліку можливих конфігурацій. Дуже часто трапляються випадки, коли скрипт, що чудово працює в одному середовищі, видає некоректні результати в іншому.
Кожен блок сценарію інтерпретатор розбирає окремо. На вебсторінках, коли треба комбінувати блоки JavaScript та HTML, синтаксичні помилки знайти простіше, якщо тримати функції сценарію в окремому блоці коду, або (ще краще) використовувати багато малих пов'язаних .js файлів. В такий спосіб синтаксична помилка не спричинятиме «падіння» цілої сторінки, і можна надати допомогу, елегантно вийшовши зі сторінки.
Для серверних проєктів node.js можна використовувати інтегроване середовище розробки WebStorm.
- ↑ Scripting Media Type — 2006.
- ↑ JScript development in Microsoft Office 11 [Архівовано 2012-12-21 у Wayback Machine.] (MS InfoPath 2003)
- ↑ Introducing Drosera — Surfin' Safari. Архів оригіналу за 22 серпня 2011. Процитовано 23 квітня 2009.
- ↑ JSLint help page. Архів оригіналу за 2 березня 2009. Процитовано 23 квітня 2009. [Архівовано 2009-03-02 у Wayback Machine.]
- Розуміння ECMAScript 6 [Архівовано 31 березня 2022 у Wayback Machine.]