JavaScript (JS) — динамічна, об'єктно-орієнтована прототипна мова програмування. Реалізація стандарту ECMAScript. Найчастіше використовується для створення сценаріїв вебсторінок, що надає можливість на боці клієнта (пристрої кінцевого користувача) взаємодіяти з користувачем, керувати браузером, асинхронно обмінюватися даними з сервером, змінювати структуру та зовнішній вигляд вебсторінки.
JavaScript | |
---|---|
Парадигма | імперативна, елементи функціональної, об'єктно-орієнтована (прототип-орієнтована) |
Дата появи | 1995 |
Творці | Брендан Айк |
Розробник | Netscape Communications Corporation, Mozilla Foundation |
Останній реліз | ECMAScript 2020 (червень 2020) |
Тестова версія | (27 липня 2010) |
Система типізації | динамічна, качина |
Основні реалізації | V8, SpiderMonkey, Rhino, , Carakan, Chakra (Microsoft) |
Під впливом від | Scheme, Self, Java, C, Python |
Вплинула на | ActionScript, CoffeeScript, Dart, JScript .NET, Objective-J, QML, TypeScript, |
Звичайні розширення файлів | .js [2] |
Вебсайт | ecma-international.org/publications-and-standards/standards/ecma-262/ |
|
Розширення файлу: | .js |
---|---|
MIME-тип: |
|
Узагальнений ідентифікатор типу: | com.netscape.javascript-source |
Тип формату: | текстовий файл |
JavaScript класифікують як прототипну (підмножина об'єктно-орієнтованої), скриптову мову програмування з динамічною типізацією. Окрім прототипної, JavaScript також частково підтримує інші парадигми програмування (імперативну та частково функціональну) і деякі відповідні архітектурні властивості, зокрема: динамічна та слабка типізація, автоматичне керування пам'яттю, прототипне наслідування, функції як об'єкти першого класу.
Застосування
Мова JavaScript використовується для:
- написання сценаріїв вебсторінок для надання їм інтерактивності
- створення односторінкових та прогресивних вебзастосунків (React, AngularJS, Vue.js)
- програмування на боці сервера (Node.js (Express.js))
- стаціонарних застосунків (Electron, NW.js)
- мобільних застосунків (React Native, Cordova)
- сценаріїв в прикладних програмах (наприклад, в програмах зі складу Adobe Creative Suite чи Apache JMeter)
- всередині PDF-документів тощо.
Попри схожість назв, мови Java та JavaScript є двома різними мовами, що мають відмінну семантику, хоча й мають схожі риси в стандартних бібліотеках та правилах іменування. Синтаксис обох мов отриманий «у спадок» від мови С, але семантика та дизайн JavaScript є результатом впливу мов Self та Scheme.
Історія
Поява в Netscape
1995 року компанія Netscape поставила завдання вбудувати мову програмування Scheme чи «якусь схожу» в браузер Netscape. Для цього був запрошений Брендан Айк, американський розробник, що спеціалізувався на системному програмуванні. Також, для прискорення розробки, Netscape почали співробітництво з компанією Sun Microsystems.
З часом, концепція розроблюваної мови програмування була розширена до можливості використання безпосередньо в HTML-коді сторінки. Компанії мали на меті створити мову, що могла зв'язати різні частини вебсайтів: зображень, Java-аплетів, об'єктної моделі документа. Ця мова повинна була стати зручною для вебдизайнерів та некваліфікованих програмістів. Робочою назвою нової мови була Mocha, яка була змінена на LiveScript в перших двох бета-версіях браузера Netscape 2.0. А дещо пізніше, користуючись популярністю бренду Java, LiveScript був перейменований на JavaScript і третя бета-версія (2.0B3) Netscape 2.0 вже вийшла з сучасною назвою. Для цього була придбана відповідна ліцензія у компанії Sun Microsystems, що володіла брендом Java.
1992 року компанією Nombas була розроблена скриптова мова програмування (англ. С-minus-minus, гра слів навколо мови ), яка пізніше була перейменована на ScriptEase та могла вбудовуватися в вебсторінки. Існує хибна думка, що JavaScript створено під впливом Cmm. Насправді Брендан Айк ніколи не чув про Cmm до того, як він створив LiveScript. Пізніше, Nombas зупинили розробку Cmm та почали використовувати JavaScript, а згодом брали участь у групі зі стандартизації JavaScript.
Стандартизація
У листопаді 1996 року Netscape заявила, що відправила JavaScript в організацію ECMA для розгляду мови як промислового стандарту. У результаті подальшої роботи з'явилась стандартизована мова з назвою ECMAScript. У червні 1997 року, ECMA опублікувала першу редакцію специфікації ECMA-262. Рік по тому, у червні 1998 року, щоб адаптувати специфікацію до стандарту ISO/IEC-16262, були внесені деякі зміни і випущена друга редакція. Третя редакція побачила світ у грудні 1999 року.
Четверта версія стандарту ECMAScript так і не була закінчена і четверта редакція не вийшла. Тим не менш, п'ята редакція з'явилася в грудні 2009 року.
У червні 2015 року вийшла шоста версія, починаючи з якої комітет ECMAScript ухвалив рішення перейти на щорічні оновлення і нова версія отримала назву ES2015. Вона отримала цілу низку нововведень, серед яких: об'єкт Promise для зручного асинхронного виконування коду, деструктуруюче присвоювання, стрілочні функції, функції-генератори, шаблонні рядки, оператори оголошення змінних let та const тощо.
Версія ES2016 вийшла у червні 2016 року, серед нововведень оператор піднесення до степеня ** та метод Array.prototype.includes, який перевіряє, чи міститься переданий аргумент в масиві.
Версія ES2017, що вийшла в червні 2017 року, додала можливість використання асихронних функцій, «висячих» ком в параметрах функцій, об'єкт Atomics, декількох нових методів для роботи з рядками.
Версія ES2018 вийшла у червні 2018 року, додала можливість здійснювати асинхронні ітерації, оператор Spread (…) для роботи з об'єктами та масивами, декілька нових можливостей для регулярних виразів, метод Promise.prototype.finally, який спрацьовує по отриманню Promise'ом статусу «виконаний».
Версія ES2019 вийшла у червні 2019 року, серед нововведень: новий тип даних Symbol, нові методи для роботи з рядками та масивами, перетворення об'єктів в масиви і навпаки за допомогою Entries.
Актуальною на даний момент є версія ES2020, що вийшла у червні 2020 року. Вона додала до мови новий тип даних BigInt, оператор ?? для перевірки на null та undefined, можливість використання опціональних значень в об'єкті, динамічні імпорти, об'єкт globalThis, методи String.prototype.matchAll для пошуку у рядку за допомогою регулярних виразів та Promise.allSettled для спрацювання після виконання усіх Promise'ів.
Актуальний стан
JavaScript, наразі, є однією з найпопулярніших мов програмування в інтернеті. В перші роки існування, більшість професійних програмістів скептично ставилися до мови, цільова аудиторія якої складалася з програмістів-аматорів. Поява AJAX змінила ситуацію та звернула увагу професійної спільноти до мови, а її подальші модифікації за стандартами ES6+ внесли багато корисних можливостей, яких не вистачало для ефективного програмування. В результаті, були розроблені та покращені багато практик використання JavaScript (зокрема, тестування та налагодження), створені бібліотеки та фреймворки, поширилося використання JavaScript поза браузером.
В 2023 році, у категорії найпопулярніших мов програмування серед IT-спеціалістів згідно рейтингу IEEE Spectrum, який охоплював 59 мов програмування, топ-5 виглядав так: Python, Java, C++, C, JavaScript.
Опис
JavaScript має низку властивостей об'єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об'єктів в ній відрізняється від традиційних мов ООП. Крім того, JavaScript має кілька властивостей, притаманних функціональним мовам, — функції як об'єкти першого класу, об'єкти як списки, каррінг, анонімні функції, замикання (closures) — що додає мові додаткову гнучкість.
JavaScript має C-подібний синтаксис, але в порівнянні з мовою C має такі корінні відмінності:
- об'єкти, з можливістю інтроспекції і динамічної зміни типу через механізм прототипів
- функції як об'єкти першого класу
- обробка винятків
- автоматичне приведення типів
- автоматичне збирання сміття
- анонімні та стрілочні функції
JavaScript містить декілька десятків вбудованих об'єктів, які поділяються на групи: фундаментальні (Object, Function, Boolean, Symbol), помилки (група об'єктів Error), числа та дати (Number, BigInt, Math Date), текстові (String, RegExp), індексовані (група об'єктів Array), ключові (Map, Set, WeakMap, WeakSet), для роботи з структурованими даними (ArrayBuffer, Atomics, DataView, JSON), абстрактні (Promise, Generator), рефлекційні (Reflect, Proxy), групи Intl та WebAssembly. Крім того, JavaScript містить набір вбудованих операцій, що керують логікою виконання програм. Синтаксис JavaScript в основному відповідає синтаксису мови Java (тобто, зрештою, успадкований від C), але спрощений у порівнянні з ним, щоб зробити мову сценаріїв легкою для вивчення. Так, наприклад, декларація змінної не містить її типу, властивості також не мають типів, а декларація функції може знаходитися в тексті програми після неї.
Семантика мови схожа з мовою Self.
Приклад оголошення і використання класу в JavaScript:
class MyClass { constructor() { this.myValue1 = 1; this.myValue2 = 2; } } const mc = new MyClass(); mc.myValue1 = mc.myValue2 * 2;
Одна з популярних технологій, що дозволила зробити сторінки динамічнішими і забезпечити нові можливості — це динамічне завантаження і вставка даних в документ, що отримала назву AJAX.
Використання в HTML
При використанні в рамках технології DHTML JavaScript код включається в HTML-код сторінки і виконується інтерпретатором, вбудованим в браузер. Код JavaScript вставляється в теги <script>
</script>
, хоча в більшості браузерів мова сценаріїв за умовчанням саме JavaScript.
Скрипт, що виводить модальне вікно з класичним написом «Hello, World!» усередині браузера:
<script> alert("Hello, World!"); </script>
Є ще одна можливість підключення JavaScript — написати скрипт окремим файлом, та підключити його за допомогою конструкції:
<script src="шлях/до/файлу/зі/скриптом.js"></script>
Браузери, які дотримуються концепції інтеграції JavaScript в існуючі системи, підтримують включення скрипту, наприклад, у значення атрибуту події:
<a href="delete.php" onclick="return confirm('Ви впевнені?');">Видалити</a>
Після натискання на посилання, функція confirm() викликає модальне вікно з написом «Ви впевнені?», а return false блокує перехід за посиланням. Цей код працюватиме тільки якщо в браузері вбудована та ввімкнена підтримка JavaScript, інакше перехід за посиланням відбудеться без попередження.
Асинхронні скрипти: defer/async
Атрибути async
і defer
використовуються для ввімкнення асинхронного порядку завантаження скриптів.
Атрибут async
Підтримується всіма браузерами, крім IE9-. Скрипт виконується асинхронно. Тобто, елемент <script async src = "...">
, виконується в момент його отримання браузером.
Атрибут defer
Підтримується всіма браузерами, включно з найстаршими версіями IE. Скрипт також виконується асинхронно, не змушує чекати сторінку, але є дві відмінності від async
.
Перша — браузер гарантує, що відносний порядок скриптів з defer
буде збережений.
Тобто, в такому коді (з async) першим працюватиме той скрипт, котрий швидше завантажиться.
<script src="1.js" async></script> <script src="2.js" async></script>
А в такому коді (з defer) першим спрацює завжди 1.js, а скрипт 2.js, навіть якщо завантажився раніше, буде його чекати.
<script src="1.js" defer></script> <script src="2.js" defer></script>
Тому атрибут defer
використовують в тих випадках, коли другий скрипт 2.js залежить від першого 1.js, наприклад — використовує щось, описане першим скриптом.
Друга відмінність — скрипт з defer
спрацює, коли весь HTML-документ буде оброблений браузером.
Наприклад, якщо документ досить великий…
<script src="async.js" async></script> <script src="defer.js" defer></script>
…то скрипт async.js виконається, щойно завантажиться, можливо, до того, як весь документ готовий. А defer.js почекає готовності всього документа.
Це буває зручно, коли ми в скрипті хочемо працювати з документом, і повинні бути впевнені, що він цілком отриманий.
Типізація
Оскільки JavaScript є інтерпретованою мовою програмування, без строгої типізації, і може виконуватися в різних середовищах, кожне зі своїми власними особливостями сумісності, програміст має бути уважним, і повинен перевіряти, що його код виконується як очікується в широкому переліку можливих конфігурацій. Типізація вважається одною з ключових проблем JavaScript, тому восени 2012 року, компанія Microsoft презентувала мову програмування TypeScript, що компілюється в JavaScript та містить декілька важливих для програмістів доповнень, що полегшують розробку.
Відлагодження
При розробці великих і нетривіальних вебзастосунків з використанням JavaScript, критично важливим є доступ до інструментів відлагодження. Оскільки браузери, від різних виробників, дещо відрізняються у поведінці JavaScript і реалізації Об'єктної моделі документа, необхідно мати відлагоджувач для кожного браузера, якщо вебзастосунок орієнтовано на нього.
На даний час Firefox, Opera, Google Chrome, Edge та Safari мають зневаджувачі для себе.
Також існують такі корисні інструменти, як:
- ESLint [ 7 жовтня 2017 у Wayback Machine.] — перевірка якості коду, що сканує JavaScript-програму, шукаючи вади у коді;
- Prettier [ 13 вересня 2017 у Wayback Machine.] — автоматичне форматування коду у коректний вигляд;
- Babel [ 15 листопада 2016 у Wayback Machine.] — компілятор JavaScript-коду до старіших версій стандарту ECMAScript, який допомагає розробникам використовувати найновіші можливості мови для оточення, що не встигло реалізувати останній стандарт.
Кожен блок сценарію інтерпретатор розбирає окремо. На вебсторінках, коли треба комбінувати блоки JavaScript та HTML, синтаксичні помилки знайти легше, якщо зберігати функції сценарію в окремому блоці коду, або (ще краще) використовувати багато малих, пов'язаних між собою .js файлів. Таким чином, синтаксична помилка не спричинятиме «падіння» всієї вебсторінки та дозволить сповістити користувача про проблему.
Див. також
- ActionScript — реалізація від Adobe для Flash.
- WebAssembly
- Rhino — реалізація на Java.
- JScript — реалізація в Internet Explorer від Microsoft.
- DOM — об'єктна модель документа.
- Firebug
- AJAX
- JSON
- Вебдокументація MDN
Примітки
- . www.ecma-international.org. Архів оригіналу за 18 вересня 2008. Процитовано 18 січня 2021. (англ.)
- M. Miller, M. Borins, M. Bynens et al. Updates to ECMAScript Media Types — IETF, 2022. — doi:10.17487/RFC9239
- . tools.ietf.org. Архів оригіналу за 27 травня 2019. Процитовано 21 грудня 2015.
- . Mac OS X Reference Library. Apple Inc. Архів оригіналу за 25 грудня 2018. Процитовано 5 березня 2010.
- (PDF). Архів оригіналу (PDF) за 12 квітня 2015. Процитовано 20 серпня 2014.
- Electron
- NW.js
- React Native
- Cordova
- ECMAScript Language Overview (PDF). 23 жовтня 2007. с. 4. Архів оригіналу (PDF) за 13 липня 2010. Процитовано 3 травня 2009.
- , «Netscape and Sun announce Javascript», PR Newswire, December 4, 1995
- . Web.archive.org. Архів оригіналу за 8 лютого 2008.
- Brent Noorda's Answers on ECMA. Quora. Процитовано 13 квітня 2014.
- (PDF). Архів оригіналу (PDF) за 12 квітня 2015. Процитовано 26 травня 2013.
- . ECMAScript. Архів оригіналу за 26 квітня 2011. Процитовано 13 квітня 2014.
- . Tproger (ru-RU) . 7 вересня 2017. Архів оригіналу за 8 жовтня 2017. Процитовано 8 жовтня 2017.
- Caballero, Carlos (28 січня 2020). . Medium (англ.). Архів оригіналу за 22 січня 2021. Процитовано 18 січня 2021.
- Caballero, Carlos (28 січня 2020). . Medium (англ.). Архів оригіналу за 24 січня 2021. Процитовано 18 січня 2021.
- Caballero, Carlos (28 січня 2020). . Medium (англ.). Архів оригіналу за 24 січня 2021. Процитовано 18 січня 2021.
- (ru-RU) . Архів оригіналу за 8 жовтня 2017. Процитовано 8 жовтня 2017.
- . Crockford.com. Архів оригіналу за 7 грудня 2020. Процитовано 19 травня 2009.
- IEEE Spectrum опублікувала рейтинг найпопулярніших мов програмування 2023 року. // Автор: Артем Житкевич. 30.08.2023
- . developer.mozilla.org. Архів оригіналу за 19 січня 2021. Процитовано 18 січня 2021.
Посилання
Вікісховище має мультимедійні дані за темою: JavaScript |
- . https://developer.mozilla.org/. MDN Web Docs. Архів оригіналу за 3 квітня 2019. Процитовано 28 квітня 2019.
- ECMA-262 [ 30 грудня 2015 у Wayback Machine.], ECMAScript Language Specification. (англ.)
- (англ.) (третє видання; формат PDF)
- , JavaScript довідник [ 20 липня 2012 у Wayback Machine.] на mozilla.org. (англ.)
- Довідник з JavaScript версії 1.5: 1.5 [ 13 грудня 2007 у Wayback Machine.] (англ.)
- Зміни в нових версіях JavaScript: 1.7 [Архівовано 22 серпня 2011 у WebCite], 1.6 [Архівовано 22 серпня 2011 у WebCite] (англ.)
- JScript [ 31 серпня 2010 у Wayback Machine.] та JScript .NET [ 13 серпня 2010 у Wayback Machine.] довідники на сайті MSDN Library [ 11 червня 2010 у Wayback Machine.] (англ.)
- www.nakedjavascript.com [ 23 березня 2010 у Wayback Machine.](англ.)
- Mozilla JavaScript shells [ 29 червня 2011 у Wayback Machine.] (англ.)
- Mozilla (Rhino engine) JavaScript shell [ 3 січня 2011 у Wayback Machine.] (англ.)
- JavaScript довідка українською [ 24 квітня 2022 у Wayback Machine.]
- Сучасний підручник з JavaScript
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
JavaScript JS dinamichna ob yektno oriyentovana prototipna mova programuvannya Realizaciya standartu ECMAScript Najchastishe vikoristovuyetsya dlya stvorennya scenariyiv vebstorinok sho nadaye mozhlivist na boci kliyenta pristroyi kincevogo koristuvacha vzayemodiyati z koristuvachem keruvati brauzerom asinhronno obminyuvatisya danimi z serverom zminyuvati strukturu ta zovnishnij viglyad vebstorinki JavaScriptParadigma imperativna elementi funkcionalnoyi ob yektno oriyentovana prototip oriyentovana Data poyavi 1995Tvorci Brendan AjkRozrobnik Netscape Communications Corporation Mozilla FoundationOstannij reliz ECMAScript 2020 cherven 2020 Testova versiya 27 lipnya 2010 Sistema tipizaciyi dinamichna kachinaOsnovni realizaciyi V8 SpiderMonkey Rhino Carakan Chakra Microsoft Pid vplivom vid Scheme Self Java C PythonVplinula na ActionScript CoffeeScript Dart JScript NET Objective J QML TypeScript Zvichajni rozshirennya fajliv js 2 Vebsajt ecma international org publications and standards standards ecma 262 Mediafajli u VikishovishiRozshirennya fajlu jsMIME tip code application javascript text javascript zastarila code Uzagalnenij identifikator tipu com netscape javascript sourceTip formatu tekstovij fajl Ne plutati z Java Ne plutati z JScript JavaScript klasifikuyut yak prototipnu pidmnozhina ob yektno oriyentovanoyi skriptovu movu programuvannya z dinamichnoyu tipizaciyeyu Okrim prototipnoyi JavaScript takozh chastkovo pidtrimuye inshi paradigmi programuvannya imperativnu ta chastkovo funkcionalnu i deyaki vidpovidni arhitekturni vlastivosti zokrema dinamichna ta slabka tipizaciya avtomatichne keruvannya pam yattyu prototipne nasliduvannya funkciyi yak ob yekti pershogo klasu ZastosuvannyaMova JavaScript vikoristovuyetsya dlya napisannya scenariyiv vebstorinok dlya nadannya yim interaktivnosti stvorennya odnostorinkovih ta progresivnih vebzastosunkiv React AngularJS Vue js programuvannya na boci servera Node js Express js stacionarnih zastosunkiv Electron NW js mobilnih zastosunkiv React Native Cordova scenariyiv v prikladnih programah napriklad v programah zi skladu Adobe Creative Suite chi Apache JMeter vseredini PDF dokumentiv tosho Popri shozhist nazv movi Java ta JavaScript ye dvoma riznimi movami sho mayut vidminnu semantiku hocha j mayut shozhi risi v standartnih bibliotekah ta pravilah imenuvannya Sintaksis oboh mov otrimanij u spadok vid movi S ale semantika ta dizajn JavaScript ye rezultatom vplivu mov Self ta Scheme IstoriyaPoyava v Netscape 1995 roku kompaniya Netscape postavila zavdannya vbuduvati movu programuvannya Scheme chi yakus shozhu v brauzer Netscape Dlya cogo buv zaproshenij Brendan Ajk amerikanskij rozrobnik sho specializuvavsya na sistemnomu programuvanni Takozh dlya priskorennya rozrobki Netscape pochali spivrobitnictvo z kompaniyeyu Sun Microsystems Z chasom koncepciya rozroblyuvanoyi movi programuvannya bula rozshirena do mozhlivosti vikoristannya bezposeredno v HTML kodi storinki Kompaniyi mali na meti stvoriti movu sho mogla zv yazati rizni chastini vebsajtiv zobrazhen Java apletiv ob yektnoyi modeli dokumenta Cya mova povinna bula stati zruchnoyu dlya vebdizajneriv ta nekvalifikovanih programistiv Robochoyu nazvoyu novoyi movi bula Mocha yaka bula zminena na LiveScript v pershih dvoh beta versiyah brauzera Netscape 2 0 A desho piznishe koristuyuchis populyarnistyu brendu Java LiveScript buv perejmenovanij na JavaScript i tretya beta versiya 2 0B3 Netscape 2 0 vzhe vijshla z suchasnoyu nazvoyu Dlya cogo bula pridbana vidpovidna licenziya u kompaniyi Sun Microsystems sho volodila brendom Java 1992 roku kompaniyeyu Nombas bula rozroblena skriptova mova programuvannya angl S minus minus gra sliv navkolo movi S yaka piznishe bula perejmenovana na ScriptEase ta mogla vbudovuvatisya v vebstorinki Isnuye hibna dumka sho JavaScript stvoreno pid vplivom Cmm Naspravdi Brendan Ajk nikoli ne chuv pro Cmm do togo yak vin stvoriv LiveScript Piznishe Nombas zupinili rozrobku Cmm ta pochali vikoristovuvati JavaScript a zgodom brali uchast u grupi zi standartizaciyi JavaScript Standartizaciya U listopadi 1996 roku Netscape zayavila sho vidpravila JavaScript v organizaciyu ECMA dlya rozglyadu movi yak promislovogo standartu U rezultati podalshoyi roboti z yavilas standartizovana mova z nazvoyu ECMAScript U chervni 1997 roku ECMA opublikuvala pershu redakciyu specifikaciyi ECMA 262 Rik po tomu u chervni 1998 roku shob adaptuvati specifikaciyu do standartu ISO IEC 16262 buli vneseni deyaki zmini i vipushena druga redakciya Tretya redakciya pobachila svit u grudni 1999 roku Chetverta versiya standartu ECMAScript tak i ne bula zakinchena i chetverta redakciya ne vijshla Tim ne mensh p yata redakciya z yavilasya v grudni 2009 roku U chervni 2015 roku vijshla shosta versiya pochinayuchi z yakoyi komitet ECMAScript uhvaliv rishennya perejti na shorichni onovlennya i nova versiya otrimala nazvu ES2015 Vona otrimala cilu nizku novovveden sered yakih ob yekt Promise dlya zruchnogo asinhronnogo vikonuvannya kodu destrukturuyuche prisvoyuvannya strilochni funkciyi funkciyi generatori shablonni ryadki operatori ogoloshennya zminnih let ta const tosho Versiya ES2016 vijshla u chervni 2016 roku sered novovveden operator pidnesennya do stepenya ta metod Array prototype includes yakij pereviryaye chi mistitsya peredanij argument v masivi Versiya ES2017 sho vijshla v chervni 2017 roku dodala mozhlivist vikoristannya asihronnih funkcij visyachih kom v parametrah funkcij ob yekt Atomics dekilkoh novih metodiv dlya roboti z ryadkami Versiya ES2018 vijshla u chervni 2018 roku dodala mozhlivist zdijsnyuvati asinhronni iteraciyi operator Spread dlya roboti z ob yektami ta masivami dekilka novih mozhlivostej dlya regulyarnih viraziv metod Promise prototype finally yakij spracovuye po otrimannyu Promise om statusu vikonanij Versiya ES2019 vijshla u chervni 2019 roku sered novovveden novij tip danih Symbol novi metodi dlya roboti z ryadkami ta masivami peretvorennya ob yektiv v masivi i navpaki za dopomogoyu Entries Aktualnoyu na danij moment ye versiya ES2020 sho vijshla u chervni 2020 roku Vona dodala do movi novij tip danih BigInt operator dlya perevirki na null ta undefined mozhlivist vikoristannya opcionalnih znachen v ob yekti dinamichni importi ob yekt globalThis metodi String prototype matchAll dlya poshuku u ryadku za dopomogoyu regulyarnih viraziv ta Promise allSettled dlya spracyuvannya pislya vikonannya usih Promise iv Aktualnij stan JavaScript narazi ye odniyeyu z najpopulyarnishih mov programuvannya v interneti V pershi roki isnuvannya bilshist profesijnih programistiv skeptichno stavilisya do movi cilova auditoriya yakoyi skladalasya z programistiv amatoriv Poyava AJAX zminila situaciyu ta zvernula uvagu profesijnoyi spilnoti do movi a yiyi podalshi modifikaciyi za standartami ES6 vnesli bagato korisnih mozhlivostej yakih ne vistachalo dlya efektivnogo programuvannya V rezultati buli rozrobleni ta pokrasheni bagato praktik vikoristannya JavaScript zokrema testuvannya ta nalagodzhennya stvoreni biblioteki ta frejmvorki poshirilosya vikoristannya JavaScript poza brauzerom V 2023 roci u kategoriyi najpopulyarnishih mov programuvannya sered IT specialistiv zgidno rejtingu IEEE Spectrum yakij ohoplyuvav 59 mov programuvannya top 5 viglyadav tak Python Java C C JavaScript OpisJavaScript maye nizku vlastivostej ob yektno oriyentovanoyi movi ale zavdyaki koncepciyi prototipiv pidtrimka ob yektiv v nij vidriznyayetsya vid tradicijnih mov OOP Krim togo JavaScript maye kilka vlastivostej pritamannih funkcionalnim movam funkciyi yak ob yekti pershogo klasu ob yekti yak spiski karring anonimni funkciyi zamikannya closures sho dodaye movi dodatkovu gnuchkist JavaScript maye C podibnij sintaksis ale v porivnyanni z movoyu C maye taki korinni vidminnosti ob yekti z mozhlivistyu introspekciyi i dinamichnoyi zmini tipu cherez mehanizm prototipiv funkciyi yak ob yekti pershogo klasu obrobka vinyatkiv avtomatichne privedennya tipiv avtomatichne zbirannya smittya anonimni ta strilochni funkciyi JavaScript mistit dekilka desyatkiv vbudovanih ob yektiv yaki podilyayutsya na grupi fundamentalni Object Function Boolean Symbol pomilki grupa ob yektiv Error chisla ta dati Number BigInt Math Date tekstovi String RegExp indeksovani grupa ob yektiv Array klyuchovi Map Set WeakMap WeakSet dlya roboti z strukturovanimi danimi ArrayBuffer Atomics DataView JSON abstraktni Promise Generator reflekcijni Reflect Proxy grupi Intl ta WebAssembly Krim togo JavaScript mistit nabir vbudovanih operacij sho keruyut logikoyu vikonannya program Sintaksis JavaScript v osnovnomu vidpovidaye sintaksisu movi Java tobto zreshtoyu uspadkovanij vid C ale sproshenij u porivnyanni z nim shob zrobiti movu scenariyiv legkoyu dlya vivchennya Tak napriklad deklaraciya zminnoyi ne mistit yiyi tipu vlastivosti takozh ne mayut tipiv a deklaraciya funkciyi mozhe znahoditisya v teksti programi pislya neyi Semantika movi shozha z movoyu Self Priklad ogoloshennya i vikoristannya klasu v JavaScript class MyClass constructor this myValue1 1 this myValue2 2 const mc new MyClass mc myValue1 mc myValue2 2 Odna z populyarnih tehnologij sho dozvolila zrobiti storinki dinamichnishimi i zabezpechiti novi mozhlivosti ce dinamichne zavantazhennya i vstavka danih v dokument sho otrimala nazvu AJAX Vikoristannya v HTMLPri vikoristanni v ramkah tehnologiyi DHTML JavaScript kod vklyuchayetsya v HTML kod storinki i vikonuyetsya interpretatorom vbudovanim v brauzer Kod JavaScript vstavlyayetsya v tegi lt script gt lt script gt hocha v bilshosti brauzeriv mova scenariyiv za umovchannyam same JavaScript Skript sho vivodit modalne vikno z klasichnim napisom Hello World useredini brauzera lt script gt alert Hello World lt script gt Ye she odna mozhlivist pidklyuchennya JavaScript napisati skript okremim fajlom ta pidklyuchiti jogo za dopomogoyu konstrukciyi lt script src shlyah do fajlu zi skriptom js gt lt script gt Brauzeri yaki dotrimuyutsya koncepciyi integraciyi JavaScript v isnuyuchi sistemi pidtrimuyut vklyuchennya skriptu napriklad u znachennya atributu podiyi lt a href delete php onclick return confirm Vi vpevneni gt Vidaliti lt a gt Pislya natiskannya na posilannya funkciya confirm viklikaye modalne vikno z napisom Vi vpevneni a return false blokuye perehid za posilannyam Cej kod pracyuvatime tilki yaksho v brauzeri vbudovana ta vvimknena pidtrimka JavaScript inakshe perehid za posilannyam vidbudetsya bez poperedzhennya Asinhronni skripti defer async Atributi async i defer vikoristovuyutsya dlya vvimknennya asinhronnogo poryadku zavantazhennya skriptiv Atribut async Pidtrimuyetsya vsima brauzerami krim IE9 Skript vikonuyetsya asinhronno Tobto element span class p lt span span class nt script span span class na async span span class na src span span class o span span class s span span class p gt span vikonuyetsya v moment jogo otrimannya brauzerom Atribut defer Pidtrimuyetsya vsima brauzerami vklyuchno z najstarshimi versiyami IE Skript takozh vikonuyetsya asinhronno ne zmushuye chekati storinku ale ye dvi vidminnosti vid async Persha brauzer garantuye sho vidnosnij poryadok skriptiv z defer bude zberezhenij Tobto v takomu kodi z async pershim pracyuvatime toj skript kotrij shvidshe zavantazhitsya lt script src 1 js async gt lt script gt lt script src 2 js async gt lt script gt A v takomu kodi z defer pershim spracyuye zavzhdi 1 js a skript 2 js navit yaksho zavantazhivsya ranishe bude jogo chekati lt script src 1 js defer gt lt script gt lt script src 2 js defer gt lt script gt Tomu atribut defervikoristovuyut v tih vipadkah koli drugij skript 2 js zalezhit vid pershogo 1 js napriklad vikoristovuye shos opisane pershim skriptom Druga vidminnist skript z defer spracyuye koli ves HTML dokument bude obroblenij brauzerom Napriklad yaksho dokument dosit velikij lt script src async js async gt lt script gt lt script src defer js defer gt lt script gt to skript async js vikonayetsya shojno zavantazhitsya mozhlivo do togo yak ves dokument gotovij A defer js pochekaye gotovnosti vsogo dokumenta Ce buvaye zruchno koli mi v skripti hochemo pracyuvati z dokumentom i povinni buti vpevneni sho vin cilkom otrimanij TipizaciyaOskilki JavaScript ye interpretovanoyu movoyu programuvannya bez strogoyi tipizaciyi i mozhe vikonuvatisya v riznih seredovishah kozhne zi svoyimi vlasnimi osoblivostyami sumisnosti programist maye buti uvazhnim i povinen pereviryati sho jogo kod vikonuyetsya yak ochikuyetsya v shirokomu pereliku mozhlivih konfiguracij Tipizaciya vvazhayetsya odnoyu z klyuchovih problem JavaScript tomu voseni 2012 roku kompaniya Microsoft prezentuvala movu programuvannya TypeScript sho kompilyuyetsya v JavaScript ta mistit dekilka vazhlivih dlya programistiv dopovnen sho polegshuyut rozrobku VidlagodzhennyaPri rozrobci velikih i netrivialnih vebzastosunkiv z vikoristannyam JavaScript kritichno vazhlivim ye dostup do instrumentiv vidlagodzhennya Oskilki brauzeri vid riznih virobnikiv desho vidriznyayutsya u povedinci JavaScript i realizaciyi Ob yektnoyi modeli dokumenta neobhidno mati vidlagodzhuvach dlya kozhnogo brauzera yaksho vebzastosunok oriyentovano na nogo Na danij chas Firefox Opera Google Chrome Edge ta Safari mayut znevadzhuvachi dlya sebe Takozh isnuyut taki korisni instrumenti yak ESLint 7 zhovtnya 2017 u Wayback Machine perevirka yakosti kodu sho skanuye JavaScript programu shukayuchi vadi u kodi Prettier 13 veresnya 2017 u Wayback Machine avtomatichne formatuvannya kodu u korektnij viglyad Babel 15 listopada 2016 u Wayback Machine kompilyator JavaScript kodu do starishih versij standartu ECMAScript yakij dopomagaye rozrobnikam vikoristovuvati najnovishi mozhlivosti movi dlya otochennya sho ne vstiglo realizuvati ostannij standart Kozhen blok scenariyu interpretator rozbiraye okremo Na vebstorinkah koli treba kombinuvati bloki JavaScript ta HTML sintaksichni pomilki znajti legshe yaksho zberigati funkciyi scenariyu v okremomu bloci kodu abo she krashe vikoristovuvati bagato malih pov yazanih mizh soboyu js fajliv Takim chinom sintaksichna pomilka ne sprichinyatime padinnya vsiyeyi vebstorinki ta dozvolit spovistiti koristuvacha pro problemu Div takozhActionScript realizaciya vid Adobe dlya Flash WebAssembly Rhino realizaciya na Java JScript realizaciya v Internet Explorer vid Microsoft DOM ob yektna model dokumenta Firebug AJAX JSON Vebdokumentaciya MDNPrimitki www ecma international org Arhiv originalu za 18 veresnya 2008 Procitovano 18 sichnya 2021 angl M Miller M Borins M Bynens et al Updates to ECMAScript Media Types IETF 2022 doi 10 17487 RFC9239 d Track Q217082d Track Q111929478 tools ietf org Arhiv originalu za 27 travnya 2019 Procitovano 21 grudnya 2015 Mac OS X Reference Library Apple Inc Arhiv originalu za 25 grudnya 2018 Procitovano 5 bereznya 2010 PDF Arhiv originalu PDF za 12 kvitnya 2015 Procitovano 20 serpnya 2014 Electron NW js React Native Cordova ECMAScript Language Overview PDF 23 zhovtnya 2007 s 4 Arhiv originalu PDF za 13 lipnya 2010 Procitovano 3 travnya 2009 Netscape and Sun announce Javascript PR Newswire December 4 1995 Web archive org Arhiv originalu za 8 lyutogo 2008 Brent Noorda s Answers on ECMA Quora Procitovano 13 kvitnya 2014 PDF Arhiv originalu PDF za 12 kvitnya 2015 Procitovano 26 travnya 2013 ECMAScript Arhiv originalu za 26 kvitnya 2011 Procitovano 13 kvitnya 2014 Tproger ru RU 7 veresnya 2017 Arhiv originalu za 8 zhovtnya 2017 Procitovano 8 zhovtnya 2017 Caballero Carlos 28 sichnya 2020 Medium angl Arhiv originalu za 22 sichnya 2021 Procitovano 18 sichnya 2021 Caballero Carlos 28 sichnya 2020 Medium angl Arhiv originalu za 24 sichnya 2021 Procitovano 18 sichnya 2021 Caballero Carlos 28 sichnya 2020 Medium angl Arhiv originalu za 24 sichnya 2021 Procitovano 18 sichnya 2021 ru RU Arhiv originalu za 8 zhovtnya 2017 Procitovano 8 zhovtnya 2017 Crockford com Arhiv originalu za 7 grudnya 2020 Procitovano 19 travnya 2009 IEEE Spectrum opublikuvala rejting najpopulyarnishih mov programuvannya 2023 roku Avtor Artem Zhitkevich 30 08 2023 developer mozilla org Arhiv originalu za 19 sichnya 2021 Procitovano 18 sichnya 2021 PosilannyaVikishovishe maye multimedijni dani za temoyu JavaScript https developer mozilla org MDN Web Docs Arhiv originalu za 3 kvitnya 2019 Procitovano 28 kvitnya 2019 ECMA 262 30 grudnya 2015 u Wayback Machine ECMAScript Language Specification angl angl tretye vidannya format PDF JavaScript dovidnik 20 lipnya 2012 u Wayback Machine na mozilla org angl Dovidnik z JavaScript versiyi 1 5 1 5 13 grudnya 2007 u Wayback Machine angl Zmini v novih versiyah JavaScript 1 7 Arhivovano 22 serpnya 2011 u WebCite 1 6 Arhivovano 22 serpnya 2011 u WebCite angl JScript 31 serpnya 2010 u Wayback Machine ta JScript NET 13 serpnya 2010 u Wayback Machine dovidniki na sajti MSDN Library 11 chervnya 2010 u Wayback Machine angl www nakedjavascript com 23 bereznya 2010 u Wayback Machine angl Mozilla JavaScript shells 29 chervnya 2011 u Wayback Machine angl Mozilla Rhino engine JavaScript shell 3 sichnya 2011 u Wayback Machine angl JavaScript dovidka ukrayinskoyu 24 kvitnya 2022 u Wayback Machine Suchasnij pidruchnik z JavaScript Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi