ECMAScript

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
ECMAScript
Парадигма:мульти-парадигмова
Дата появи:1995
Творці:Brendan Eich
Розробник:Netscape Communications Corporation
Останній реліз:ES9[1] (9 червня, 2018; 11 місяців тому (2018-06-09))
Система типізації:неявна типізація
Основні реалізації:SpiderMonkey, Rhino, KJS, JavaScriptCore
Діалекти:JScript
Під впливом від:Self, Perl
Сторінка інтернет:{{{website}}}

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. Робота над версією 9 стандарту була завершена у червні 2018 року.

Видання Ім'я Дата випуску Зміни від попереднього видання Редактор
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
Докладніше про ES6
Червень 2015 року Додано let і const.

Додано значення параметрів за замовчуванням. Додано Array.find (). Додано Array.findIndex ().

Аллен Вірфс-Брок
7 ECMAScript 7 Червень 2016 року Основні стандартні функції мови включають в себе блок-область видимість змінних і функцій, знищенням моделі (змінні), відповідні виклики хвоста, оператор зведення в ступені **для чисел await, asyncключові слова для асинхронного програмування. Брайан Терлсон
8 ECMAScript 8 Червень 2017 року Додано додавання рядків.

Додані нові властивості об'єкта. Додані функції Async. Додана спільна пам'ять.

Брайан Терлсон
9 ECMAScript 9 Червень 2018 року Додані властивості відпочинку / поширення.

Додано асинхронну ітерацію. Додано Promise.finally (). Доповнення до RegExp.

Брайан Терлсон


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.

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

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

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