ECMAScript

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
ECMAScript
Парадигма мульти-парадигмова
Дата появи 1995
Творці Brendan Eich
Розробник Netscape Communications Corporation
Останній реліз Видання 11 (червень 2020; рік тому (2020-06))
Система типізації неявна типізація
Основні реалізації 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) Докладніше про ES6

Червень 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 — це динамічне ім'я, яке відноситься до будь-якої наступної версії під час написання. Функції ES.Next більш правильно називаються пропозиціями, оскільки, за визначенням, специфікація ще не завершена.

Використання в HTML[ред. | ред. код]

При використанні в рамках технології 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.

Виноски[ред. | ред. код]

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]