JavaScript


























JavaScript
Unofficial JavaScript logo 2.svg

Парадигма:

імперативна, елементи функціональної, об'єктно-орієнтована (прототип-орієнтована)
Дата появи:1995
Творці:Брендан Айк
Розробник:
Netscape Communications Corporation, Mozilla Foundation
Останній реліз:ECMAScript 2017[1] (червня 2017)

Система типізації:

динамічна, качина
Основні реалізації:
V8, SpiderMonkey, Rhino, KJS, Carakan, Chakra (Microsoft)
Під впливом від:
Scheme, Self, Java, C, Python
Вплинула на:
ActionScript, CoffeeScript, Dart, JScript .NET, Objective-J, QML, TypeScript, LiveScript

Сторінка інтернет:
developer.mozilla.org/docs/Web/JavaScript









JavaScript

Javascript icon.svg

Розширення файлу:

.js

MIME-тип:

application/javascript
text/javascript (застаріла)[2]


Узагальнений ідентифікатор типу:

com.netscape.javascript-source[3]
Тип формату:
текстовий файл

JavaScript (JS) — динамічна, об'єктно-орієнтована[4]прототипна мова програмування. Реалізація стандарту ECMAScript. Найчастіше використовується для створення сценаріїв веб-сторінок, що надає можливість на стороні клієнта (пристрої кінцевого користувача) взаємодіяти з користувачем, керувати браузером, асинхронно обмінюватися даними з сервером, змінювати структуру та зовнішній вигляд веб-сторінки.


JavaScript класифікують як прототипну (підмножина об'єктно-орієнтованої), скриптову мову програмування з динамічною типізацією. Окрім прототипної, JavaScript також частково підтримує інші парадигми програмування (імперативну та частково функціональну) і деякі відповідні архітектурні властивості, зокрема: динамічна та слабка типізація, автоматичне керування пам'яттю, прототипне наслідування, функції як об'єкти першого класу.


Мова JavaScript використовується для:


  • написання сценаріїв веб-сторінок для надання їм інтерактивності;

  • створення односторінкових веб-застосунків (ReactJS, AngularJS, Vue.js);


  • програмування на стороні сервера (Node.js);

  • стаціонарних застосунків (Electron, NW.js);

  • мобільних застосунків (React Native, Cordova);

  • сценаріїв в прикладному ПЗ (наприклад, в програмах зі складу Adobe Creative Suite чи Apache JMeter);

  • всередині PDF-документів тощо.

Незважаючи на схожість назв, мови Java та JavaScript є двома різними мовами, що мають відмінну семантику, хоча й мають схожі риси в стандартних бібліотеках та правилах іменування. Синтаксис обох мов отриманий «у спадок» від мови С, але семантика та дизайн JavaScript є результатом впливу мов Self та Scheme.[5]




Зміст





  • 1 Історія

    • 1.1 Поява в Netscape


    • 1.2 Стандартизація


    • 1.3 Актуальний стан



  • 2 Про мову


  • 3 Використання в HTML


  • 4 Зневадження


  • 5 Примітки


  • 6 Див. також


  • 7 Посилання




Історія |



Поява в Netscape |


1995 року компанія Netscape поставила завдання вбудувати мову програмування Scheme чи «якусь схожу» в браузер Netscape. Для цього був запрошений Брендан Айк, американський розробник, що спеціалізувався на системному програмуванні. Також, для прискорення розробки, Netscape почали співробітництво з компанією Sun Microsystems.


З часом, концепція розроблюваної мови програмування була розширена до можливості використання безпосередньо в HTML-коді сторінки. Компанії мали на меті створити мову, що могла зв'язати різні частини веб-сайтів: зображень, Java-аплетів, об'єктної моделі документа. Ця мова повинна була стати зручною для веб-дизайнерів та некваліфікованих програмістів. Робочою назвою нової мови була Mocha, яка була змінена на LiveScript в перших двох бета-версіях браузера Netscape 2.0. А дещо пізніше, користуючись популярністю бренду Java, LiveScript був перейменований на JavaScript і третя бета-версія (2.0B3) Netscape 2.0 вже вийшла з сучасною назвою[6][7]. Для цього була придбана відповідна ліцензія у компанії Sun Microsystems, що володіла брендом Java.


1992 року компанією Nombas була розроблена скриптова мова програмування Cmm (англ. С-minus-minus, гра слів навколо мови С++), яка пізніше була перейменована на ScriptEase та могла вбудовуватися в веб-сторінки. Існує хибна думка, що JavaScript був створений під впливом Cmm. Насправді, Брендан Айк ніколи не чув про Cmm до того, як він створив LiveScript[8]. Пізніше, Nombas зупинили розробку Cmm та почали використовувати JavaScript, а згодом брали участь у групі зі стандартизації JavaScript.



Стандартизація |


У листопаді 1996 року Netscape заявила, що відправила JavaScript в організацію Ecma International для розгляду мови як промислового стандарту. В результаті подальшої роботи з'явилась стандартизована мова з назвою ECMAScript. У червні 1997 року, Ecma International опублікувала першу редакцію специфікації ECMA-262. Рік по тому, у червні 1998 року, щоб адаптувати специфікацію до стандарту ISO/IEC-16262, були внесені деякі зміни і випущена друга редакція. Третя редакція побачила світ в грудні 1999 року.[9]


Четверта версія стандарту ECMAScript так і не була закінчена і четверта редакція не вийшла[10]. Тим не менш, п'ята редакція з'явилася в грудні 2009 року.


У червні 2015 року[11] вийшла шоста версія, починаючи з якої комітет ECMAScript прийняв рішення перейти на щорічні оновлення і нова версія отримала назву ES2015. Вона отримала цілу низку нововведень, серед яких: об'єкт Promise для зручного асихронного виконування коду, деструктуруюче присвоювання, стрілочні функції, функції-генератори, шаблонні рядки, оператори оголошення змінних let та const тощо.


Версія ES2016 вийшла у червні 2016 року, серед нововведень оператор піднесення до степеня ** та метод Array.prototype.includes, який перевіряє, чи міститься переданий аргумент в масиві.


Версія ES2017, що вийшла в червні 2017 року і на сьогодні є актуальною версією стандарту додала можливість використання асихронних функцій, «висячих» ком в параметрах функцій, об'єкт Atomics, декільких нових методів для роботи з рядками.



Актуальний стан |


JavaScript, наразі, є однією з найпопулярніших мов програмування в інтернеті[12]. Але спочатку багато професійних програмістів скептично ставилися до мови, цільова аудиторія якої складалася з програмістів-любителів[13]. Поява AJAX змінила ситуацію та повернула увагу професійної спільноти до мови, а подальші модифікації мови за стандартами ES2015 та ES2017 внесли багато корисних можливостей, яких не вистачало для ефективного програмування. В результаті, були розроблені та покращені багато практик використання JavaScript (зокрема, тестування та налагодження), створені бібліотеки та фреймворки, поширилося використання JavaScript поза браузером.



Про мову |


JavaScript має низку властивостей об'єктно-орієнтованої мови, але завдяки концепції прототипів підтримка об'єктів в ній відрізняється від традиційних мов ООП. Крім того, JavaScript має ряд властивостей, притаманних функціональним мовам, — функції як об'єкти першого класу, об'єкти як списки, каррінг, анонімні функції, замикання (closures) — що додає мові додаткову гнучкість.


JavaScript має C-подібний синтаксис, але в порівнянні з мовою Сі має такі корінні відмінності:


  • об'єкти, з можливістю інтроспекції і динамічної зміни типу через механізм прототипів

  • функції як об'єкти першого класу

  • обробка винятків

  • автоматичне приведення типів

  • автоматичне прибирання сміття

  • анонімні функції

JavaScript містить декілька вбудованих об'єктів: Global, Object, Error, Function, Array, String, Boolean, Number, Math, Date, RegExp. Крім того, 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> з обов'язковим по специфікації 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, критично важливим є доступ до інструментів зневадження. Оскільки браузери, від різних виробників, дещо відрізняються у поведінці JavaScript і реалізації Об'єктної Моделі Документа, необхідно мати зневаджувач для кожного браузера, якщо веб-застосування орієнтовано на нього.


На даний час Firefox, Opera, Google Chrome, Edge та Safari мають зневаджувачі для себе.


Також існують такі корисні інструменти, як:



  • ESLint — перевірка якості коду, що сканує JavaScript програму, шукаючи проблеми коду;


  • Prettier — автоматичне форматування коду у коректний вигляд;


  • Babel — транспайлер Javascipt коду до більш старих версій стандартів ECMAScript, який допомагає розробникам використовувати найновіші можливості мови для оточення, що не встигло реалізувати останній стандарт.

Оскільки JavaScript є інтерпретатором, без строгої типізації, і може виконуватися в різних середовищах, кожне зі своїми власними особливостями сумісності, програміст має бути дуже уважним, і повинен перевіряти, що його код виконується як очікується в широкому переліку можливих конфігурацій.


Кожен блок сценарію інтерпретатор розбирає окремо. На веб-сторінках, коли треба комбінувати блоки JavaScript та HTML, синтаксичні помилки знайти легше, якщо тримати функції сценарію в окремому блоці коду, або (ще краще) використовувати багато малих пов'язаних .js файлів. В такий спосіб синтаксична помилка не спричинятиме «падіння» цілої сторінки, і можна надати допомогу, елегантно вийшовши зі сторінки.



Примітки |




  1. https://www.ecma-international.org/publications/standards/Ecma-262.htm.  Пропущений або порожній |title= (довідка)


  2. RFC 4329. tools.ietf.org. 


  3. System-Declared Uniform Type Identifiers. Mac OS X Reference Library. Apple Inc. Процитовано 2010-03-05. 


  4. ECMAScript Language Specification. Архів оригіналу за 12 квітень 2015. Процитовано 20 серпень 2014. 


  5. ECMAScript Language Overview (PDF). 2007-10-23. с. 4. Архів оригіналу за 2010-07-13. Процитовано 2009-05-03. 


  6. Press release announcing JavaScript, «Netscape and Sun announce Javascript», PR Newswire, December 4, 1995


  7. TechVision: Innovators of the Net: Brendan Eich and JavaScript. Web.archive.org. Архів оригіналу за 2008-02-08. 


  8. Brent Noorda's Answers on ECMA. Quora. Процитовано 2014-04-13. 


  9. ECMAScript 3rd Edition specification (PDF). Архів оригіналу за 2015-04-12. Процитовано 2013-05-26. 


  10. Documentation. ECMAScript. Архів оригіналу за 2011-04-26. Процитовано 2014-04-13. 


  11. ES6, ES8, ES2017: что такое ECMAScript и чем это отличается от JavaScript. Tproger (ru-RU). 2017-09-07. Процитовано 2017-10-08. 


  12. 15 самых популярных языков программирования по версии GitHub (ru-RU). Процитовано 2017-10-08. 


  13. JavaScript: The World's Most Misunderstood Programming Language. Crockford.com. Процитовано 2009-05-19. 



Див. також |



  • ActionScript — реалізація від Adobe для Flash.


  • Rhino — реалізація на Java.


  • JScript — реалізація в Інтернет Експлорер від Microsoft.


  • DOM — об'єктна модель документа.

  • Firebug

  • AJAX

  • JSON


Посилання |



  • яваскрипт.укр - JavaScript довідка українською мовою.


  • ECMA-262, ECMAScript Language Specification.


  • Стандарт ECMA-262 (англ.) (третє видання; формат PDF)


  • JavaScript домашня сторінка, JavaScript довідник на mozilla.org.

  • Довідник з JavaScript версії 1.5: 1.5

  • Зміни в нових версіях JavaScript: 1.7, 1.6


  • JScript та JScript .NET довідники на сайті MSDN Library

  • IBM Developerworks, JavaScript's language features


  • www.nakedjavascript.com(англ.)


  • Mozilla JavaScript shells (англ.)


  • Mozilla (Rhino engine) JavaScript shell (англ.)






Popular posts from this blog

AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

Алба-Юлія

Захаров Федір Захарович